From 720b9d993217882e02d54212673a9f978f819fe3 Mon Sep 17 00:00:00 2001 From: zyxist Date: Sun, 16 May 2010 10:15:22 +0000 Subject: [PATCH] [Opt_2.1] Bugfixing day. [Opt_2.1] Unit tests from 2.0 version added and prepared for testing backward compatibility. [Opt_2.1] New unit tests for opt:prolog, opt:dtd, opt:content and opt:repeat [Opt_2.1] Documentation update process started. --- docs/input/en/syntax.attributes.content.txt | 63 +- docs/input/en/syntax.instructions.if.txt | 106 +- .../en/syntax.instructions.procedure.txt | 8 + docs/input/en/syntax.instructions.switch.txt | 7 + docs/input/en/syntax.instructions.use.txt | 195 + docs/input/en/whats-new.txt | 81 + docs/settings.ini | 4 +- docs/sort_hints.txt | 1 + lib/Class.php | 4 +- lib/Compiler/Class.php | 31 +- lib/Expression/Exception.php | 51 + lib/Expression/Standard.php | 49 +- lib/Expression/Standard/Parser.php | 2 +- lib/Expression/String.php | 16 +- lib/Instruction/Abstract.php | 20 +- lib/Instruction/Attribute.php | 2 +- lib/Instruction/Component.php | 3 +- lib/Instruction/Extend.php | 2 +- lib/Instruction/Procedure.php | 6 +- lib/Instruction/Prolog.php | 6 +- lib/Instruction/Put.php | 10 +- lib/Instruction/Root.php | 2 +- lib/Instruction/Snippet.php | 10 + lib/Xml/Comment.php | 4 + tests/Extra/TestFSBase.php | 2 - tests/Package/Instruction/InstructionTest.php | 33 + .../Instruction/OldInstructionTest.php | 17 +- .../Instruction/OldTests/attribute_1.txt | 18 + .../Instruction/OldTests/attribute_10.txt | 43 + .../Instruction/OldTests/attribute_11.txt | 40 + .../Instruction/OldTests/attribute_12.txt | 33 + .../Instruction/OldTests/attribute_13.txt | 21 + .../Instruction/OldTests/attribute_14.txt | 22 + .../Instruction/OldTests/attribute_15.txt | 21 + .../Instruction/OldTests/attribute_16.txt | 13 + .../Instruction/OldTests/attribute_17.txt | 22 + .../Instruction/OldTests/attribute_2.txt | 19 + .../Instruction/OldTests/attribute_3.txt | 24 + .../Instruction/OldTests/attribute_4.txt | 18 + .../Instruction/OldTests/attribute_5.txt | 21 + .../Instruction/OldTests/attribute_6.txt | 22 + .../Instruction/OldTests/attribute_7.txt | 22 + .../Instruction/OldTests/attribute_8.txt | 21 + .../Instruction/OldTests/attribute_9.txt | 13 + .../OldTests/attributes_build_1.txt | 23 + .../OldTests/attributes_build_2.txt | 24 + .../OldTests/attributes_build_3.txt | 30 + .../Package/Instruction/OldTests/block_1.txt | 24 + .../Package/Instruction/OldTests/block_2.txt | 20 + .../Package/Instruction/OldTests/block_3.txt | 24 + .../Package/Instruction/OldTests/block_4.txt | 20 + .../Package/Instruction/OldTests/block_5.txt | 20 + .../Instruction/OldTests/capture_1.txt | 17 + .../Instruction/OldTests/capture_2.txt | 18 + .../Instruction/OldTests/capture_3.txt | 18 + .../Instruction/OldTests/capture_4.txt | 23 + .../Instruction/OldTests/capture_5.txt | 21 + .../Instruction/OldTests/capture_6.txt | 10 + .../Instruction/OldTests/component_1.txt | 21 + .../Instruction/OldTests/component_10.txt | 24 + .../Instruction/OldTests/component_11.txt | 25 + .../Instruction/OldTests/component_12.txt | 25 + .../Instruction/OldTests/component_13.txt | 36 + .../Instruction/OldTests/component_2.txt | 18 + .../Instruction/OldTests/component_3.txt | 19 + .../Instruction/OldTests/component_4.txt | 19 + .../Instruction/OldTests/component_5.txt | 25 + .../Instruction/OldTests/component_6.txt | 24 + .../Instruction/OldTests/component_7.txt | 16 + .../Instruction/OldTests/component_8.txt | 29 + .../Instruction/OldTests/component_9.txt | 17 + .../{Tests/Content => OldTests}/content_1.txt | 0 .../{Tests/Content => OldTests}/content_2.txt | 0 .../{Tests/Dtd => OldTests}/dtd_1.txt | 0 .../{Tests/Dtd => OldTests}/dtd_2.txt | 0 .../{Tests/Dtd => OldTests}/dtd_3.txt | 0 .../{Tests/Dtd => OldTests}/dtd_4.txt | 0 .../{Tests/Dtd => OldTests}/dtd_5.txt | 0 .../{Tests/Dtd => OldTests}/dtd_6.txt | 0 .../{Tests/Dtd => OldTests}/dtd_7.txt | 0 .../{Tests/Dtd => OldTests}/dtd_8.txt | 0 .../{Tests/Dtd => OldTests}/dtd_9.txt | 2 +- .../Package/Instruction/OldTests/extend_1.txt | 25 + .../Instruction/OldTests/extend_10.txt | 33 + .../Instruction/OldTests/extend_11.txt | 50 + .../Instruction/OldTests/extend_12.txt | 24 + .../Package/Instruction/OldTests/extend_2.txt | 38 + .../Package/Instruction/OldTests/extend_3.txt | 40 + .../Package/Instruction/OldTests/extend_4.txt | 20 + .../Package/Instruction/OldTests/extend_5.txt | 47 + .../Package/Instruction/OldTests/extend_6.txt | 49 + .../Package/Instruction/OldTests/extend_7.txt | 54 + .../Package/Instruction/OldTests/extend_8.txt | 23 + .../Package/Instruction/OldTests/extend_9.txt | 36 + tests/Package/Instruction/OldTests/for_1.txt | 25 + tests/Package/Instruction/OldTests/for_2.txt | 25 + tests/Package/Instruction/OldTests/for_3.txt | 26 + .../Instruction/OldTests/foreach_1.txt | 23 + .../Instruction/OldTests/foreach_10.txt | 26 + .../Instruction/OldTests/foreach_2.txt | 23 + .../Instruction/OldTests/foreach_3.txt | 20 + .../Instruction/OldTests/foreach_4.txt | 23 + .../Instruction/OldTests/foreach_5.txt | 24 + .../Instruction/OldTests/foreach_6.txt | 26 + .../Instruction/OldTests/foreach_7.txt | 26 + .../Instruction/OldTests/foreach_8.txt | 26 + .../Instruction/OldTests/foreach_9.txt | 26 + tests/Package/Instruction/OldTests/grid_1.txt | 47 + tests/Package/Instruction/OldTests/grid_2.txt | 49 + tests/Package/Instruction/OldTests/grid_3.txt | 34 + tests/Package/Instruction/OldTests/grid_4.txt | 34 + tests/Package/Instruction/OldTests/grid_5.txt | 51 + tests/Package/Instruction/OldTests/grid_6.txt | 53 + tests/Package/Instruction/OldTests/grid_7.txt | 51 + tests/Package/Instruction/OldTests/grid_8.txt | 49 + tests/Package/Instruction/OldTests/grid_9.txt | 33 + tests/Package/Instruction/OldTests/if_1.txt | 19 + tests/Package/Instruction/OldTests/if_10.txt | 27 + tests/Package/Instruction/OldTests/if_2.txt | 18 + tests/Package/Instruction/OldTests/if_3.txt | 22 + tests/Package/Instruction/OldTests/if_4.txt | 22 + tests/Package/Instruction/OldTests/if_5.txt | 25 + tests/Package/Instruction/OldTests/if_6.txt | 25 + tests/Package/Instruction/OldTests/if_7.txt | 25 + tests/Package/Instruction/OldTests/if_8.txt | 27 + tests/Package/Instruction/OldTests/if_9.txt | 27 + .../Instruction/OldTests/include_1.txt | 22 + .../Instruction/OldTests/include_2.txt | 24 + .../Instruction/OldTests/include_3.txt | 30 + .../Instruction/OldTests/include_4.txt | 24 + .../Instruction/OldTests/include_5.txt | 31 + .../Instruction/OldTests/include_6.txt | 24 + .../Instruction/OldTests/include_7.txt | 30 + .../Instruction/OldTests/include_8.txt | 20 + .../Package/Instruction/OldTests/insert_1.txt | 14 + .../Package/Instruction/OldTests/insert_2.txt | 13 + .../Package/Instruction/OldTests/insert_3.txt | 14 + .../Package/Instruction/OldTests/insert_4.txt | 15 + .../Package/Instruction/OldTests/insert_5.txt | 15 + .../Instruction/OldTests/literal_1.txt | 15 + .../Instruction/OldTests/literal_2.txt | 15 + .../Instruction/OldTests/literal_3.txt | 15 + .../Instruction/OldTests/literal_4.txt | 15 + .../Instruction/OldTests/literal_5.txt | 22 + .../Instruction/OldTests/literal_6.txt | 23 + tests/Package/Instruction/OldTests/on_1.txt | 15 + .../{Tests/Prolog => OldTests}/prolog_1.txt | 0 .../{Tests/Prolog => OldTests}/prolog_2.txt | 0 .../{Tests/Prolog => OldTests}/prolog_3.txt | 0 tests/Package/Instruction/OldTests/put_1.txt | 14 + tests/Package/Instruction/OldTests/put_2.txt | 24 + tests/Package/Instruction/OldTests/put_3.txt | 26 + .../{Tests/Repeat => OldTests}/repeat_1.txt | 0 .../{Tests/Repeat => OldTests}/repeat_2.txt | 0 .../{Tests/Repeat => OldTests}/repeat_3.txt | 0 .../{Tests/Repeat => OldTests}/repeat_4.txt | 0 tests/Package/Instruction/OldTests/root_1.txt | 18 + tests/Package/Instruction/OldTests/root_2.txt | 13 + tests/Package/Instruction/OldTests/root_3.txt | 16 + tests/Package/Instruction/OldTests/root_4.txt | 21 + tests/Package/Instruction/OldTests/root_5.txt | 24 + .../Instruction/OldTests/section_1.txt | 26 + .../Instruction/OldTests/section_10.txt | 34 + .../Instruction/OldTests/section_11.txt | 28 + .../Instruction/OldTests/section_12.txt | 29 + .../Instruction/OldTests/section_2.txt | 16 + .../Instruction/OldTests/section_3.txt | 39 + .../Instruction/OldTests/section_4.txt | 30 + .../Instruction/OldTests/section_5.txt | 46 + .../Instruction/OldTests/section_6.txt | 46 + .../Instruction/OldTests/section_7.txt | 17 + .../Instruction/OldTests/section_8.txt | 43 + .../Instruction/OldTests/section_9.txt | 26 + .../Instruction/OldTests/selector_1.txt | 27 + .../Instruction/OldTests/selector_2.txt | 27 + .../Instruction/OldTests/selector_3.txt | 33 + .../Instruction/OldTests/selector_4.txt | 33 + .../Instruction/OldTests/selector_5.txt | 28 + .../Instruction/OldTests/selector_6.txt | 19 + .../Instruction/OldTests/selector_7.txt | 15 + .../Instruction/OldTests/selector_8.txt | 27 + tests/Package/Instruction/OldTests/show_1.txt | 32 + .../Package/Instruction/OldTests/show_10.txt | 35 + tests/Package/Instruction/OldTests/show_2.txt | 21 + tests/Package/Instruction/OldTests/show_3.txt | 25 + tests/Package/Instruction/OldTests/show_4.txt | 45 + tests/Package/Instruction/OldTests/show_5.txt | 34 + tests/Package/Instruction/OldTests/show_6.txt | 26 + tests/Package/Instruction/OldTests/show_7.txt | 19 + tests/Package/Instruction/OldTests/show_8.txt | 21 + tests/Package/Instruction/OldTests/show_9.txt | 38 + .../Package/Instruction/OldTests/single_1.txt | 19 + .../Package/Instruction/OldTests/single_2.txt | 21 + .../Package/Instruction/OldTests/single_3.txt | 14 + .../Instruction/OldTests/snippet_1.txt | 16 + .../Instruction/OldTests/snippet_2.txt | 19 + .../Instruction/OldTests/snippet_3.txt | 16 + .../Instruction/OldTests/snippet_4.txt | 17 + .../Instruction/OldTests/snippet_5.txt | 11 + .../Instruction/OldTests/snippet_6.txt | 26 + .../Instruction/OldTests/snippet_7.txt | 26 + .../Instruction/OldTests/snippet_8.txt | 29 + tests/Package/Instruction/OldTests/tag_1.txt | 17 + tests/Package/Instruction/OldTests/tag_2.txt | 18 + tests/Package/Instruction/OldTests/tag_3.txt | 18 + tests/Package/Instruction/OldTests/tag_4.txt | 15 + tests/Package/Instruction/OldTests/tag_5.txt | 16 + tests/Package/Instruction/OldTests/tree_1.txt | 42 + tests/Package/Instruction/OldTests/tree_2.txt | 83 + tests/Package/Instruction/OldTests/tree_3.txt | 25 + tests/Package/Instruction/OldTests/tree_4.txt | 22 + tests/Package/Instruction/OldTests/tree_5.txt | 22 + tests/Package/Instruction/OldTests/tree_6.txt | 42 + tests/Package/Instruction/OldTests/tree_7.txt | 28 + .../Instruction/Tests/Content/content_all.txt | 18 + .../Tests/Content/content_append.txt | 18 + .../Tests/Content/content_basic.txt | 18 + .../Tests/Content/content_complex.txt | 19 + .../Tests/Content/content_display.txt | 18 + .../Tests/Content/content_prepend.txt | 18 + .../Instruction/Tests/Dtd/dtd_custom.txt | 13 + .../Instruction/Tests/Dtd/dtd_html40.txt | 13 + .../Instruction/Tests/Dtd/dtd_html5.txt | 13 + .../Instruction/Tests/Dtd/dtd_multiple.txt | 14 + .../Instruction/Tests/Dtd/dtd_unknown.txt | 10 + .../Tests/Dtd/dtd_xhtml10frameset.txt | 13 + .../Tests/Dtd/dtd_xhtml10strict.txt | 13 + .../Tests/Dtd/dtd_xhtml10transitional.txt | 13 + .../Instruction/Tests/Dtd/dtd_xhtml11.txt | 13 + .../Tests/Prolog/prolog_custom_args.txt | 16 + .../Tests/Prolog/prolog_default.txt | 16 + .../Tests/Prolog/prolog_dynamic_encoding.txt | 21 + .../Prolog/prolog_dynamic_standalone.txt | 21 + .../Tests/Prolog/prolog_dynamic_version.txt | 21 + .../Tests/Prolog/prolog_in_content.txt | 18 + .../Instruction/Tests/Repeat/repeat_basic.txt | 25 + .../Tests/Repeat/repeat_iterator.txt | 25 + .../Tests/Repeat/repeat_separator.txt | 25 + .../Tests/Repeat/repeat_separator_2.txt | 26 + tests/run-bc.php | 113 + tests/run-single.php | 2 +- tools/lexer/expression_lexer.php | 505 + tools/lexer/expression_parser.out | 12512 ++++++++++++++++ tools/lexer/expression_parser.php | 2149 +++ tools/lexer/expression_parser.y | 2 +- 245 files changed, 20753 insertions(+), 83 deletions(-) create mode 100644 docs/input/en/syntax.instructions.procedure.txt create mode 100644 docs/input/en/syntax.instructions.switch.txt create mode 100644 docs/input/en/syntax.instructions.use.txt create mode 100644 docs/input/en/whats-new.txt create mode 100644 lib/Expression/Exception.php create mode 100644 tests/Package/Instruction/OldTests/attribute_1.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_10.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_11.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_12.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_13.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_14.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_15.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_16.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_17.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_2.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_3.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_4.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_5.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_6.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_7.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_8.txt create mode 100644 tests/Package/Instruction/OldTests/attribute_9.txt create mode 100644 tests/Package/Instruction/OldTests/attributes_build_1.txt create mode 100644 tests/Package/Instruction/OldTests/attributes_build_2.txt create mode 100644 tests/Package/Instruction/OldTests/attributes_build_3.txt create mode 100644 tests/Package/Instruction/OldTests/block_1.txt create mode 100644 tests/Package/Instruction/OldTests/block_2.txt create mode 100644 tests/Package/Instruction/OldTests/block_3.txt create mode 100644 tests/Package/Instruction/OldTests/block_4.txt create mode 100644 tests/Package/Instruction/OldTests/block_5.txt create mode 100644 tests/Package/Instruction/OldTests/capture_1.txt create mode 100644 tests/Package/Instruction/OldTests/capture_2.txt create mode 100644 tests/Package/Instruction/OldTests/capture_3.txt create mode 100644 tests/Package/Instruction/OldTests/capture_4.txt create mode 100644 tests/Package/Instruction/OldTests/capture_5.txt create mode 100644 tests/Package/Instruction/OldTests/capture_6.txt create mode 100644 tests/Package/Instruction/OldTests/component_1.txt create mode 100644 tests/Package/Instruction/OldTests/component_10.txt create mode 100644 tests/Package/Instruction/OldTests/component_11.txt create mode 100644 tests/Package/Instruction/OldTests/component_12.txt create mode 100644 tests/Package/Instruction/OldTests/component_13.txt create mode 100644 tests/Package/Instruction/OldTests/component_2.txt create mode 100644 tests/Package/Instruction/OldTests/component_3.txt create mode 100644 tests/Package/Instruction/OldTests/component_4.txt create mode 100644 tests/Package/Instruction/OldTests/component_5.txt create mode 100644 tests/Package/Instruction/OldTests/component_6.txt create mode 100644 tests/Package/Instruction/OldTests/component_7.txt create mode 100644 tests/Package/Instruction/OldTests/component_8.txt create mode 100644 tests/Package/Instruction/OldTests/component_9.txt rename tests/Package/Instruction/{Tests/Content => OldTests}/content_1.txt (100%) rename tests/Package/Instruction/{Tests/Content => OldTests}/content_2.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_1.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_2.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_3.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_4.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_5.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_6.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_7.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_8.txt (100%) rename tests/Package/Instruction/{Tests/Dtd => OldTests}/dtd_9.txt (86%) create mode 100644 tests/Package/Instruction/OldTests/extend_1.txt create mode 100644 tests/Package/Instruction/OldTests/extend_10.txt create mode 100644 tests/Package/Instruction/OldTests/extend_11.txt create mode 100644 tests/Package/Instruction/OldTests/extend_12.txt create mode 100644 tests/Package/Instruction/OldTests/extend_2.txt create mode 100644 tests/Package/Instruction/OldTests/extend_3.txt create mode 100644 tests/Package/Instruction/OldTests/extend_4.txt create mode 100644 tests/Package/Instruction/OldTests/extend_5.txt create mode 100644 tests/Package/Instruction/OldTests/extend_6.txt create mode 100644 tests/Package/Instruction/OldTests/extend_7.txt create mode 100644 tests/Package/Instruction/OldTests/extend_8.txt create mode 100644 tests/Package/Instruction/OldTests/extend_9.txt create mode 100644 tests/Package/Instruction/OldTests/for_1.txt create mode 100644 tests/Package/Instruction/OldTests/for_2.txt create mode 100644 tests/Package/Instruction/OldTests/for_3.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_1.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_10.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_2.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_3.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_4.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_5.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_6.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_7.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_8.txt create mode 100644 tests/Package/Instruction/OldTests/foreach_9.txt create mode 100644 tests/Package/Instruction/OldTests/grid_1.txt create mode 100644 tests/Package/Instruction/OldTests/grid_2.txt create mode 100644 tests/Package/Instruction/OldTests/grid_3.txt create mode 100644 tests/Package/Instruction/OldTests/grid_4.txt create mode 100644 tests/Package/Instruction/OldTests/grid_5.txt create mode 100644 tests/Package/Instruction/OldTests/grid_6.txt create mode 100644 tests/Package/Instruction/OldTests/grid_7.txt create mode 100644 tests/Package/Instruction/OldTests/grid_8.txt create mode 100644 tests/Package/Instruction/OldTests/grid_9.txt create mode 100644 tests/Package/Instruction/OldTests/if_1.txt create mode 100644 tests/Package/Instruction/OldTests/if_10.txt create mode 100644 tests/Package/Instruction/OldTests/if_2.txt create mode 100644 tests/Package/Instruction/OldTests/if_3.txt create mode 100644 tests/Package/Instruction/OldTests/if_4.txt create mode 100644 tests/Package/Instruction/OldTests/if_5.txt create mode 100644 tests/Package/Instruction/OldTests/if_6.txt create mode 100644 tests/Package/Instruction/OldTests/if_7.txt create mode 100644 tests/Package/Instruction/OldTests/if_8.txt create mode 100644 tests/Package/Instruction/OldTests/if_9.txt create mode 100644 tests/Package/Instruction/OldTests/include_1.txt create mode 100644 tests/Package/Instruction/OldTests/include_2.txt create mode 100644 tests/Package/Instruction/OldTests/include_3.txt create mode 100644 tests/Package/Instruction/OldTests/include_4.txt create mode 100644 tests/Package/Instruction/OldTests/include_5.txt create mode 100644 tests/Package/Instruction/OldTests/include_6.txt create mode 100644 tests/Package/Instruction/OldTests/include_7.txt create mode 100644 tests/Package/Instruction/OldTests/include_8.txt create mode 100644 tests/Package/Instruction/OldTests/insert_1.txt create mode 100644 tests/Package/Instruction/OldTests/insert_2.txt create mode 100644 tests/Package/Instruction/OldTests/insert_3.txt create mode 100644 tests/Package/Instruction/OldTests/insert_4.txt create mode 100644 tests/Package/Instruction/OldTests/insert_5.txt create mode 100644 tests/Package/Instruction/OldTests/literal_1.txt create mode 100644 tests/Package/Instruction/OldTests/literal_2.txt create mode 100644 tests/Package/Instruction/OldTests/literal_3.txt create mode 100644 tests/Package/Instruction/OldTests/literal_4.txt create mode 100644 tests/Package/Instruction/OldTests/literal_5.txt create mode 100644 tests/Package/Instruction/OldTests/literal_6.txt create mode 100644 tests/Package/Instruction/OldTests/on_1.txt rename tests/Package/Instruction/{Tests/Prolog => OldTests}/prolog_1.txt (100%) rename tests/Package/Instruction/{Tests/Prolog => OldTests}/prolog_2.txt (100%) rename tests/Package/Instruction/{Tests/Prolog => OldTests}/prolog_3.txt (100%) create mode 100644 tests/Package/Instruction/OldTests/put_1.txt create mode 100644 tests/Package/Instruction/OldTests/put_2.txt create mode 100644 tests/Package/Instruction/OldTests/put_3.txt rename tests/Package/Instruction/{Tests/Repeat => OldTests}/repeat_1.txt (100%) rename tests/Package/Instruction/{Tests/Repeat => OldTests}/repeat_2.txt (100%) rename tests/Package/Instruction/{Tests/Repeat => OldTests}/repeat_3.txt (100%) rename tests/Package/Instruction/{Tests/Repeat => OldTests}/repeat_4.txt (100%) create mode 100644 tests/Package/Instruction/OldTests/root_1.txt create mode 100644 tests/Package/Instruction/OldTests/root_2.txt create mode 100644 tests/Package/Instruction/OldTests/root_3.txt create mode 100644 tests/Package/Instruction/OldTests/root_4.txt create mode 100644 tests/Package/Instruction/OldTests/root_5.txt create mode 100644 tests/Package/Instruction/OldTests/section_1.txt create mode 100644 tests/Package/Instruction/OldTests/section_10.txt create mode 100644 tests/Package/Instruction/OldTests/section_11.txt create mode 100644 tests/Package/Instruction/OldTests/section_12.txt create mode 100644 tests/Package/Instruction/OldTests/section_2.txt create mode 100644 tests/Package/Instruction/OldTests/section_3.txt create mode 100644 tests/Package/Instruction/OldTests/section_4.txt create mode 100644 tests/Package/Instruction/OldTests/section_5.txt create mode 100644 tests/Package/Instruction/OldTests/section_6.txt create mode 100644 tests/Package/Instruction/OldTests/section_7.txt create mode 100644 tests/Package/Instruction/OldTests/section_8.txt create mode 100644 tests/Package/Instruction/OldTests/section_9.txt create mode 100644 tests/Package/Instruction/OldTests/selector_1.txt create mode 100644 tests/Package/Instruction/OldTests/selector_2.txt create mode 100644 tests/Package/Instruction/OldTests/selector_3.txt create mode 100644 tests/Package/Instruction/OldTests/selector_4.txt create mode 100644 tests/Package/Instruction/OldTests/selector_5.txt create mode 100644 tests/Package/Instruction/OldTests/selector_6.txt create mode 100644 tests/Package/Instruction/OldTests/selector_7.txt create mode 100644 tests/Package/Instruction/OldTests/selector_8.txt create mode 100644 tests/Package/Instruction/OldTests/show_1.txt create mode 100644 tests/Package/Instruction/OldTests/show_10.txt create mode 100644 tests/Package/Instruction/OldTests/show_2.txt create mode 100644 tests/Package/Instruction/OldTests/show_3.txt create mode 100644 tests/Package/Instruction/OldTests/show_4.txt create mode 100644 tests/Package/Instruction/OldTests/show_5.txt create mode 100644 tests/Package/Instruction/OldTests/show_6.txt create mode 100644 tests/Package/Instruction/OldTests/show_7.txt create mode 100644 tests/Package/Instruction/OldTests/show_8.txt create mode 100644 tests/Package/Instruction/OldTests/show_9.txt create mode 100644 tests/Package/Instruction/OldTests/single_1.txt create mode 100644 tests/Package/Instruction/OldTests/single_2.txt create mode 100644 tests/Package/Instruction/OldTests/single_3.txt create mode 100644 tests/Package/Instruction/OldTests/snippet_1.txt create mode 100644 tests/Package/Instruction/OldTests/snippet_2.txt create mode 100644 tests/Package/Instruction/OldTests/snippet_3.txt create mode 100644 tests/Package/Instruction/OldTests/snippet_4.txt create mode 100644 tests/Package/Instruction/OldTests/snippet_5.txt create mode 100644 tests/Package/Instruction/OldTests/snippet_6.txt create mode 100644 tests/Package/Instruction/OldTests/snippet_7.txt create mode 100644 tests/Package/Instruction/OldTests/snippet_8.txt create mode 100644 tests/Package/Instruction/OldTests/tag_1.txt create mode 100644 tests/Package/Instruction/OldTests/tag_2.txt create mode 100644 tests/Package/Instruction/OldTests/tag_3.txt create mode 100644 tests/Package/Instruction/OldTests/tag_4.txt create mode 100644 tests/Package/Instruction/OldTests/tag_5.txt create mode 100644 tests/Package/Instruction/OldTests/tree_1.txt create mode 100644 tests/Package/Instruction/OldTests/tree_2.txt create mode 100644 tests/Package/Instruction/OldTests/tree_3.txt create mode 100644 tests/Package/Instruction/OldTests/tree_4.txt create mode 100644 tests/Package/Instruction/OldTests/tree_5.txt create mode 100644 tests/Package/Instruction/OldTests/tree_6.txt create mode 100644 tests/Package/Instruction/OldTests/tree_7.txt create mode 100644 tests/Package/Instruction/Tests/Content/content_all.txt create mode 100644 tests/Package/Instruction/Tests/Content/content_append.txt create mode 100644 tests/Package/Instruction/Tests/Content/content_basic.txt create mode 100644 tests/Package/Instruction/Tests/Content/content_complex.txt create mode 100644 tests/Package/Instruction/Tests/Content/content_display.txt create mode 100644 tests/Package/Instruction/Tests/Content/content_prepend.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_custom.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_html40.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_html5.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_multiple.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_unknown.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_xhtml10frameset.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_xhtml10strict.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_xhtml10transitional.txt create mode 100644 tests/Package/Instruction/Tests/Dtd/dtd_xhtml11.txt create mode 100644 tests/Package/Instruction/Tests/Prolog/prolog_custom_args.txt create mode 100644 tests/Package/Instruction/Tests/Prolog/prolog_default.txt create mode 100644 tests/Package/Instruction/Tests/Prolog/prolog_dynamic_encoding.txt create mode 100644 tests/Package/Instruction/Tests/Prolog/prolog_dynamic_standalone.txt create mode 100644 tests/Package/Instruction/Tests/Prolog/prolog_dynamic_version.txt create mode 100644 tests/Package/Instruction/Tests/Prolog/prolog_in_content.txt create mode 100644 tests/Package/Instruction/Tests/Repeat/repeat_basic.txt create mode 100644 tests/Package/Instruction/Tests/Repeat/repeat_iterator.txt create mode 100644 tests/Package/Instruction/Tests/Repeat/repeat_separator.txt create mode 100644 tests/Package/Instruction/Tests/Repeat/repeat_separator_2.txt create mode 100644 tests/run-bc.php create mode 100644 tools/lexer/expression_lexer.php create mode 100644 tools/lexer/expression_parser.out create mode 100644 tools/lexer/expression_parser.php diff --git a/docs/input/en/syntax.attributes.content.txt b/docs/input/en/syntax.attributes.content.txt index ca0ed2e..b5ab687 100644 --- a/docs/input/en/syntax.attributes.content.txt +++ b/docs/input/en/syntax.attributes.content.txt @@ -16,4 +16,65 @@ If the variable `$article.title` is not defined, we see the text *Default title* Escaping issues =============== -The attribute value may use the escaping modifiers **e:** and **u:**. The escaped content is used only to display the expression value. The emptiness is checked on the original value. \ No newline at end of file +The attribute value may use the escaping modifiers **e:** and **u:**. The escaped content is used only to display the expression value. The emptiness is checked on the original value. + +Prepending and appending some data to the content +================================================= + +Consider the following situation: + +~~~~ +[xml] + + Estimated time: + No time specified + +~~~~ + +If the time is not specified, the user might want to see an appropriate message. However, let's see what happens if the time is set. We get the following output: + +~~~~ +[xml] + + Estimated time: + 38 + +~~~~ + +OPT displayed the value correctly, but it missed the unit which we would like to be displayed, too. In OPT 2.0 we had to write a complete condition here, but fortunately OPT 2.1 introduces extra attributes `opt:content-append` and `opt:content-prepend` that co-operate with `opt:content` and allow to append or prepend some extra stuff on demand: + +~~~~ +[xml] + + Estimated time: + No time specified + +~~~~ + +Now OPT will append the unit, if the time is specified. + +> [information] +> By default, `opt:content-prepend` and `opt:content-append` expect strings as their values. In order to read their value from an expression, we must select the parser explicitely: `opt:content-append="parse:$variable"`. + +Custom displaying routine +========================= + +Let's consider another example: + +~~~~ +[xml] + + Date checked: + Not checked yet. + +~~~~ + +Suppose that the date is provided as an UNIX timestamp (number of seconds since 1.1.1970). In this case, OPT would display us the very number, but we want a formatted date. Since OPT 2.1 we may use `opt:content-display` which provides an expression used to display the matched value: + +~~~~ +[xml] + + Date checked: + Not checked yet. + +~~~~ \ No newline at end of file diff --git a/docs/input/en/syntax.instructions.if.txt b/docs/input/en/syntax.instructions.if.txt index e2b260b..93c267d 100644 --- a/docs/input/en/syntax.instructions.if.txt +++ b/docs/input/en/syntax.instructions.if.txt @@ -1,4 +1,6 @@ Title: opt:if +SeeAlso: + - syntax.instructions.switch ---- > [warning] @@ -20,7 +22,7 @@ Suppose we have a community website where the users can publish notes on various

{$note.title}

Date: {$note.date}

-

Website

+

Website

{$note.body} @@ -42,19 +44,19 @@ In the first place, we can see, how to use `opt:if` to test if a variable is set This text will show, if the condition1 is passed. - + This text will show, if the condition1 fails and condition2 is passed. - - + + This text will show, if the condition1 and condition2 fail, but condition3 is passed. - + This text will show, if neither of the conditions is passed. ~~~~ -Note that placing `opt:elseif` and `opt:else` in any tag other than `opt:if` causes an error: +Note that placing `opt:else-if` and `opt:else` in any tag other than `opt:if` causes an error: ~~~~ [xml] @@ -75,4 +77,96 @@ Now we might get back to our example and modify it to display a message about th

This is an ordinary note.

+~~~~ + +Alternative syntax +================== + +OPT 2.1 introduced a new syntax variant for `opt:if`. The primary and alternative conditions are not distinguished and provided as a set of `opt:condition` tags: + +~~~~ +[xml] + + The condition 1 + The condition 2 + The condition 3 + The final alternative + +~~~~ + +Long ifs +-------- + +An unique feature of the new syntax variant and OPT 2.1 in general are so-called **long ifs**. Basically speaking, we can separate two conditions with an ordinary template code that would be always displayed, no matter what condition actually passes. + +~~~~ +[xml] + +

First static content.

+ + The condition 1 + The condition 2 + +

Second static content.

+ + The condition 3 + +

Third static content.

+ + The final alternative +
+~~~~ + +If either condition 1 or condition 2 passes, we will see the following result: + +~~~~ +[xml] +

First static content.

+The condition 1 +

Second static content.

+

Third static content.

+~~~~ + +For third condition, we will see: + +~~~~ +[xml] +

First static content.

+

Second static content.

+The condition 3 +

Third static content.

+~~~~ + +And for the final alternative: + +~~~~ +[xml] +

First static content.

+

Second static content.

+

Third static content.

+The final alternative +~~~~ + +This feature is especially useful for customizing the templates depending on some conditions. Suppose we have two types of users: A and B. On their profile pages, there are some fields that are common, but some other are user-specific. The A-specific fields must be displayed first, then a group of common fields comes in, and finally - the fields of B users: + +~~~~ +[xml] + + +
+

A-specific field:

+

{$user.specificValue}

+
+
+
+

Common field:

+

{$user.commonValue}

+
+ +
+

B-specific field:

+

{$user.specificValue}

+
+
+
~~~~ \ No newline at end of file diff --git a/docs/input/en/syntax.instructions.procedure.txt b/docs/input/en/syntax.instructions.procedure.txt new file mode 100644 index 0000000..cbb24e7 --- /dev/null +++ b/docs/input/en/syntax.instructions.procedure.txt @@ -0,0 +1,8 @@ +Title: opt:procedure +SeeAlso: + - syntax.instructions.use + - syntax.instructions.snippet + +---- + +Not documented yet. diff --git a/docs/input/en/syntax.instructions.switch.txt b/docs/input/en/syntax.instructions.switch.txt new file mode 100644 index 0000000..565c474 --- /dev/null +++ b/docs/input/en/syntax.instructions.switch.txt @@ -0,0 +1,7 @@ +Title: opt:switch +SeeAlso: + - syntax.instructions.if + +---- + +Not documented yet. \ No newline at end of file diff --git a/docs/input/en/syntax.instructions.use.txt b/docs/input/en/syntax.instructions.use.txt new file mode 100644 index 0000000..d622b08 --- /dev/null +++ b/docs/input/en/syntax.instructions.use.txt @@ -0,0 +1,195 @@ +Title: opt:use +SeeAlso: + - syntax.instructions.snippet + - syntax.instructions.procedure + - syntax.instructions.capture + - syntax.instructions.extend + - syntax.attributes.use + +---- + +`opt:use` allows to execute the dynamic template parts in the specified place. The dynamic parts may be either snippets or procedures. + +opt:use and snippets +==================== + +`opt:use` places the specified snippet content in the specified template location. It is an essential part of the template inheritance implementation. + + Name | Type | Required? | Description +----------------|---------------------|-----------|:----------------------------------- + snippet | hard string | Yes | The name of the snippet + ignore-default | option | No | If set to *yes*, the default value of `opt:insert` is not treated as the snippet parent. + +An example: + +~~~~ +[xml] + +

I am your snippet.

+
+ +
+ +
+~~~~ + +Contrary to `opt:capture`, the inserted code remains fully functional. In the following example we change the value of the variable displayed in the snippet. We see that the value also changes in the output, between two inserts of the same code. + +~~~~ +[xml] + +

Value: {@hoo}

+
+ +
+ {@hoo is 1} + + + {@hoo is 2} + +
+~~~~ + +The result: + +~~~~ +[xml] +
+

Value: 1

+

Value: 2

+
+~~~~ + +opt:use and procedures +====================== + +`opt:use` may also call template procedures. The procedure name is provided by the `procedure` attribute. + + Name | Type | Required? | Description +----------------|---------------------|-----------|:----------------------------------- + procedure | Expression | Yes | The procedure name + +The example use: + +~~~~ +[xml] + +

I am your procedure.

+
+ +
+ +
+~~~~ + +Contrary to snippets, procedures can be selected dynamically: + +~~~~ +[xml] + +

I am your procedure.

+
+ +
+ {@procedureName is 'foo'} + +
+~~~~ + + +opt:use and the captured content +================================ + +`opt:use` may also display the content captured by `opt:capture`. Contrary to the `$system` variable, the captured part can be chosen dynamically. The instruction takes only one attribute then: + + Name | Type | Required? | Description +----------------|---------------------|-----------|:----------------------------------- + captured | Expression | Yes | The name of the captured part + +If the tag contains some content, it is treated as a default content and displayed, if the specified captured part does not exist: + +~~~~ +[xml] + +Some content here... + + +{@captured is 'foo'} + +The default content. + +~~~~ + +The default content +=================== + +`opt:use` allows to define the default content in case the snippet or procedure does not exist: + +~~~~ +[xml] +
+ +

Oops, one of the snippets is missing.

+
+
+~~~~ + +By default, if the snippet contains the `opt:parent` tag and does not overload any other snippet, the default content of `opt:use` will be treated as the parent: + +~~~~ +[xml] + +

This is a snippet code.

+ +
+ +
+ +

This is a default code.

+
+
+~~~~ + +The result: + +~~~~ +[xml] +
+

This is a snippet code.

+

This is a default code.

+
+~~~~ + +We can turn this off by setting the attribute `ignore-default` to *yes* in `opt:use`: + +~~~~ +[xml] + +

This is a snippet code.

+ +
+ +
+ +

This is a default code.

+
+
+~~~~ + +The result: + +~~~~ +[xml] +
+

This is a snippet code.

+
+~~~~ + +Now, the default content will never appear, if there is any snippet named *foo*. + +In case of procedures, OPT simply overwrites them if they appear in the template multiple times, so the default content is displayed only if there is no procedure with the specified name registered. + +Snippet and procedure arguments +=============================== + + diff --git a/docs/input/en/whats-new.txt b/docs/input/en/whats-new.txt new file mode 100644 index 0000000..80af86c --- /dev/null +++ b/docs/input/en/whats-new.txt @@ -0,0 +1,81 @@ +Title: What's new in OPT 2.1? + +---- + +Open Power Template 2.1 is the first major revision of the library, providing lots of improvements and new features. In this document, we will take a brief look at them and refer to different documentation pages that describe the changes. + +OPL Core improvements +===================== + +Open Power Template 2.1 works on an improved OPL core, also labbeled 2.1. It brings an extended autoloader with namespace support, new debug console, logger and command-line interface tools. Now you have much bigger control over the application and are able to extract much more useful information about the library. + +Expression syntax changes +========================= + +The expression parser was rewritten from scratch with PHP Parser Generator by Gregory Beaver. This change made possible to implement lots of new features that would be very hard to add to the old code. Among the most interesting ones, we can mention: + +1. Container constructors: `$a is ['foo': 'bar', 'joe': 'goo']` +2. New simple operators: `$foo contains $bar` +3. Compound operators: `$integer is between 7 and 18`, `$container contains both 'foo' and 'bar'` etc. +4. Named function arguments: `function('arg1': 'value', 'arg2': 'value', 'arg3': 'value')` +5. Dynamic container calls: `$foo.($idx).bar` + +Template syntax changes +======================= + +There are three critical template syntax modifications. The expression types are no longer selected with attribute namespaces, but encoded in the attribute value: + +~~~~ +[xml] +... +~~~~ + +This improvement allows to use expressions in attributes that already have a namespace. + +Some instructions used inconsistent tag and attribute naming style, i.e `camelStyle` and `pause-style`. In OPT 2.1 all the tag names have been converted to the `pause-style` and the old equivalents are no longer available. + +New instructions +================ + +OPT 2.1 brings some new and interesting instruction that simplify writing templates. + +Procedures +---------- + +Procedures are a dynamic equivalent of well-known snippets. You can enclose pieces of commonly used template code in procedures and then call them in various places of templates. The main difference between them and snippets is that the called procedure can be chosen dynamically: + +~~~~ +[xml] + +

Hi universe!

+
+ +{@procedureName is 'myProcedure'} + + +~~~~ + +Procedures can take arguments, but they do not return any value. Their output is some XML (HTML) code. + +Switch +------ + +OPT 2.1 implements *super-switch*, an enhanced version of well-known **switch** instruction. OPT switch supports nested choices: + +~~~~ +[xml] + + + Choice 1 + + + Choice 2 + + Nested choice + + End of choice 2 + + +~~~~ + +Note that OPT permits the code to appear **after** a nested case which is a significant improvement over the default **switch** behaviour known from PHP. The template designer is not limited when it comes to the nesting level. \ No newline at end of file diff --git a/docs/settings.ini b/docs/settings.ini index d9808f2..212540a 100644 --- a/docs/settings.ini +++ b/docs/settings.ini @@ -1,6 +1,6 @@ title = "Open Power Template" -version = "2.0" -copyright = "Invenzzia Group 2008-2009" +version = "2.1" +copyright = "Invenzzia Group 2008-2010" copyrightLink = "http://www.invenzzia.org/" license = "GNU Free Documentation License 1.2" licenseLink = "http://www.gnu.org/licenses/fdl.html" diff --git a/docs/sort_hints.txt b/docs/sort_hints.txt index cc7481f..e9e2e20 100644 --- a/docs/sort_hints.txt +++ b/docs/sort_hints.txt @@ -1,4 +1,5 @@ preface +whats-new installation installation.standard installation.phar diff --git a/lib/Class.php b/lib/Class.php index 29f314f..ebe69ad 100644 --- a/lib/Class.php +++ b/lib/Class.php @@ -707,7 +707,7 @@ class Opt_View * Data format information storage * @var array */ - private $_formatInfo = array('system' => 'System'); + private $_formatInfo = array('system' => 'System', 'opt' => 'System'); /** * Template inheritance storage for the inflectors @@ -1255,7 +1255,7 @@ public function getOutputBuffers() */ public function inherit($source, $destination = null) { - if($destination !== null) + if($destination === null) { $this->_inheritance[$this->_template] = (string)$source; } diff --git a/lib/Compiler/Class.php b/lib/Compiler/Class.php index c2db35a..6318e2d 100644 --- a/lib/Compiler/Class.php +++ b/lib/Compiler/Class.php @@ -639,9 +639,9 @@ public function unsetConversion($from) * array taken as a parameter must be an associative array of pairs * 'extending' => 'extended' file names. * - * @param Array $inheritance The list of inheritance rules. + * @param array $inheritance The list of inheritance rules. */ - public function setInheritance(Array $inheritance) + public function setInheritance(array $inheritance) { $this->_inheritance = $inheritance; } // end setInheritance(); @@ -693,7 +693,7 @@ public function parseSpecialChars($text) */ public function isIdentifier($id) { - return preg_match($this->_rEncodingName, $id); + return preg_match('/[A-Za-z]([A-Za-z0-9.\_]|\-)*/si', $id); } // end isIdentifier(); /** @@ -1167,10 +1167,12 @@ public function hasModifier($name) } // end hasModifier(); /** - * Returns the template name that is inherited by the template '$name' + * Returns the template name that is inherited by the template '$name'. + * If there is no dynamic inheritance rule for the specified template, + * it returns NULL. * - * @param String $name The "current" template file name - * @return String + * @param string $name The "current" template file name + * @return string */ public function inherits($name) { @@ -1792,17 +1794,14 @@ public function compileAttribute(Opt_Xml_Attribute $attr) public function parseExpression($expr, $ee = null, $escape = self::ESCAPE_BOTH, $defaultModifier = false) { // Autodetection of the expression engine - if($ee === null) + if(preg_match('/^([a-zA-Z0-9\_]{2,})\:([^\:].*)$/', $expr, $found)) { - if(preg_match('/^([a-zA-Z0-9\_]{2,})\:([^\:].*)$/', $expr, $found)) - { - $expr = $found[2]; - $ee = $found[1]; - } - else - { - $ee = $this->_tpl->expressionEngine; - } + $expr = $found[2]; + $ee = $found[1]; + } + elseif($ee === null) + { + $ee = $this->_tpl->expressionEngine; } if(!isset($this->_exprEngines[$ee])) diff --git a/lib/Expression/Exception.php b/lib/Expression/Exception.php new file mode 100644 index 0000000..305e4b2 --- /dev/null +++ b/lib/Expression/Exception.php @@ -0,0 +1,51 @@ + + * + * This file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. It is also available through + * WWW at this URL: + * + * Copyright (c) Invenzzia Group + * and other contributors. See website for details. + * + * $Id: Exception.php 325 2010-04-07 15:59:39Z zyxist $ + */ + +/** + * The base exception class for Open Power Template expression + * parsers. + * + * @author Tomasz Jędrzejewski + * @copyright Invenzzia Group and contributors. + * @license http://www.invenzzia.org/license/new-bsd New BSD License + */ +class Opt_Expression_Exception extends Opt_Exception +{ + /** + * The invalid expression + * @var string + */ + private $_expression; + + /** + * Sets the buggy expression. + * + * @param string $expression The buggy expression + */ + public function setExpression($expression) + { + $this->_expression = (string)$expression; + } // end setExpression(); + + /** + * Returns the buggy expression represented by + * this exception. + * + * @return string The buggy expression. + */ + public function getExpression() + { + return $this->_expression; + } // end getExpression(); +} // end Opt_Expression_Exception; \ No newline at end of file diff --git a/lib/Expression/Standard.php b/lib/Expression/Standard.php index 01e4416..20f1941 100644 --- a/lib/Expression/Standard.php +++ b/lib/Expression/Standard.php @@ -146,37 +146,46 @@ public function dispose() /** * Parses the source expressions to the PHP code. * + * @throws Opt_Expression_Exception * @param string $expression The expression source * @return array */ public function parse($expr) { - $this->_unique = 0; - $this->_expression = $expr; - - $lexer = new Opt_Expression_Standard_Lexer($expr); - $parser = new Opt_Expression_Standard_Parser($this); - while ($lexer->yylex()) + try { - if($lexer->token != 'w') + $this->_unique = 0; + $this->_expression = $expr; + + $lexer = new Opt_Expression_Standard_Lexer($expr); + $parser = new Opt_Expression_Standard_Parser($this); + while ($lexer->yylex()) { - $parser->doParse($lexer->token, $lexer->value); + if($lexer->token != 'w') + { + $parser->doParse($lexer->token, $lexer->value); + } } - } - $parser->doParse(0, 0); + $parser->doParse(0, 0); - $exprType = Opt_Expression_Interface::COMPOUND; - if($this->_assign == true) + $exprType = Opt_Expression_Interface::COMPOUND; + if($this->_assign == true) + { + $exprType = Opt_Expression_Interface::ASSIGNMENT; + } + $this->_assign = false; + return array( + 'bare' => $this->_compiled, + 'expression' => $this->_compiled, + 'complexity' => $this->_complexity, + 'type' => $exprType + ); + } + catch(Opt_Expression_Exception $exception) { - $exprType = Opt_Expression_Interface::ASSIGNMENT; + $exception->setExpression($expr); + throw $exception; } - $this->_assign = false; - return array( - 'bare' => $this->_compiled, - 'expression' => $this->_compiled, - 'complexity' => $this->_complexity, - 'type' => $exprType - ); } // end parse(); /** diff --git a/lib/Expression/Standard/Parser.php b/lib/Expression/Standard/Parser.php index a6df20d..065ad66 100644 --- a/lib/Expression/Standard/Parser.php +++ b/lib/Expression/Standard/Parser.php @@ -2062,7 +2062,7 @@ function yy_syntax_error($yymajor, $TOKEN) { #line 22 "expression_parser.y" - throw new Opt_Expression_Exception($TOKEN, $this->_expr->getExpression()); + throw new Opt_Expression_Exception('Invalid token: '.$TOKEN); #line 2053 "expression_parser.php" } diff --git a/lib/Expression/String.php b/lib/Expression/String.php index f0cc79c..c322708 100644 --- a/lib/Expression/String.php +++ b/lib/Expression/String.php @@ -50,11 +50,23 @@ public function dispose() /** * Parses the source expressions to the PHP code. * - * @param String $expression The expression source - * @return Array + * @param string $expression The expression source + * @return array */ public function parse($expression) { + if($expression[0] == '\\') + { + if(strlen($expression) == 1) + { + $expression = ''; + } + else + { + $expression = substr($expression, 1, strlen($expression) - 1); + } + } + $expression = '\''.addslashes($expression).'\''; return array('bare' => $expression, 'escaped' => $expression, 'type' => Opt_Expression_Interface::SCALAR); } // end parse(); diff --git a/lib/Instruction/Abstract.php b/lib/Instruction/Abstract.php index eab99e2..c410abe 100644 --- a/lib/Instruction/Abstract.php +++ b/lib/Instruction/Abstract.php @@ -134,7 +134,11 @@ public function reset() public function migrateNode(Opt_Xml_Node $node) { $name = '_migrate'.ucfirst($node->getName()); - $this->$name($node); + + if(method_exists($this, $name)) + { + $this->$name($node); + } } // end migrateNode(); /** @@ -574,14 +578,14 @@ final private function _extractAttribute(Opt_Xml_Element $item, Opt_Xml_Attribut throw new Opt_Instruction_Exception('Yhe attribute "'.$attr->getXmlName().'" in '.$item->getXmlName().' is empty.'); throw new Opt_AttributeEmpty_Exception($attr->getXmlName(), $item->getXmlName()); } - if(preg_match('/^([a-zA-Z0-9\_]{2,})\:([^\:].*)$/', $value, $found)) - { - $result = $this->_compiler->parseExpression($found[2], $found[1]); - } - else - { + // if(preg_match('/^([a-zA-Z0-9\_]{2,})\:([^\:].*)$/', $value, $found)) + // { + // $result = $this->_compiler->parseExpression($found[2], $found[1]); + // } + // else + // { $result = $this->_compiler->parseExpression($value, $exprType); - } + // } if($type == self::EXPRESSION_EXT) { diff --git a/lib/Instruction/Attribute.php b/lib/Instruction/Attribute.php index a738f2d..6665a1a 100644 --- a/lib/Instruction/Attribute.php +++ b/lib/Instruction/Attribute.php @@ -390,7 +390,7 @@ private function _getValuePairs(Opt_Xml_Element $node, array $params) $code[] = $result[0]; } } - $code = $this->_compiler->escape(implode('.', $code)); + $code = $this->_compiler->escape('a', implode('.', $code)); // Decide, what to do (final alternative or not...) if(($condition = $tag->getAttribute('test')) === null) diff --git a/lib/Instruction/Component.php b/lib/Instruction/Component.php index fcb27e2..abfab29 100644 --- a/lib/Instruction/Component.php +++ b/lib/Instruction/Component.php @@ -417,7 +417,7 @@ private function _find($node) ); $map = array('opt:set' => 0); - do + while($queue->count() > 0) { $current = $queue->dequeue(); @@ -448,7 +448,6 @@ private function _find($node) $queue->enqueue($subnode); } } - while($queue->count() > 0); return $result; } // end _find(); } // end Opt_Instruction_Component; diff --git a/lib/Instruction/Extend.php b/lib/Instruction/Extend.php index 3d4d51b..2080c24 100644 --- a/lib/Instruction/Extend.php +++ b/lib/Instruction/Extend.php @@ -88,7 +88,7 @@ public function processNode(Opt_Xml_Node $node) $this->_compiler->set('escaping', $params['escaping']); } - if($params['dynamic'] && ($branch = $this->_compiler->inherits($this->_compiler->get('currentTemplate')) !== null)) + if($params['dynamic'] && (($branch = $this->_compiler->inherits($this->_compiler->get('currentTemplate'))) !== null)) { } elseif(isset($branches[$this->_compiler->get('branch')])) diff --git a/lib/Instruction/Procedure.php b/lib/Instruction/Procedure.php index bb20d35..051cf94 100644 --- a/lib/Instruction/Procedure.php +++ b/lib/Instruction/Procedure.php @@ -156,11 +156,11 @@ public function callProcedure(array $procedureExpression, $arguments, $callUserF $procedureName = $procedureExpression['bare']; } - $code .= ' if(!isset($ctx->_procs[\''.$procedureName.'\'])){ throw new Opt_ObjectNotExists_Exception(\'template procedure\', '.$procedureName.'); } '; + $code .= ' if(!isset($ctx->_procs['.$procedureName.'])){ throw new Opt_ObjectNotExists_Exception(\'template procedure\', '.$procedureName.'); } '; if(!$callUserFunc) { - $code .= ' $__call = $ctx->_procs[\''.$procedureName.'\']; '; + $code .= ' $__call = $ctx->_procs['.$procedureName.']; '; if(sizeof($arguments) == 0) { $code .= ' $__call($ctx); '; @@ -172,7 +172,7 @@ public function callProcedure(array $procedureExpression, $arguments, $callUserF } else { - $code .= ' call_user_func_array($ctx->_procs[\''.$procedureName.'\'], '.$arguments.'); '; + $code .= ' call_user_func_array($ctx->_procs['.$procedureName.'], '.$arguments.'); '; } return $code; } // end callProcedure(); diff --git a/lib/Instruction/Prolog.php b/lib/Instruction/Prolog.php index bd94eca..7d356e2 100644 --- a/lib/Instruction/Prolog.php +++ b/lib/Instruction/Prolog.php @@ -70,15 +70,15 @@ public function processNode(Opt_Xml_Node $node) $root = $tmp; } - if(is_null($params['version'])) + if($params['version'] === null) { $params['version'] = '\'1.0\''; } - if(is_null($params['standalone'])) + if($params['standalone'] === null) { $params['standalone'] = '\'yes\''; } - if(is_null($params['encoding'])) + if($params['encoding'] === null) { unset($params['encoding']); } diff --git a/lib/Instruction/Put.php b/lib/Instruction/Put.php index 6ea0643..7f747d2 100644 --- a/lib/Instruction/Put.php +++ b/lib/Instruction/Put.php @@ -70,7 +70,7 @@ public function processNode(Opt_Xml_Node $node) */ public function processAttribute(Opt_Xml_Node $node, Opt_Xml_Attribute $attr) { - $result = $this->_compiler->parseExpression($attr->getValue(), null, Opt_Compiler_Class::ESCAPE_OFF); + $result = $this->_compiler->parseExpression($attr->getValue(), 'parse', Opt_Compiler_Class::ESCAPE_OFF); // Detect the neighbourhood. $prepend = null; @@ -78,21 +78,21 @@ public function processAttribute(Opt_Xml_Node $node, Opt_Xml_Attribute $attr) $display = null; if(($extra = $node->getAttribute('opt:content-prepend')) !== null) { - $parsed = $this->_compiler->parseExpression($extra->getValue(), null, Opt_Compiler_Class::ESCAPE_OFF); + $parsed = $this->_compiler->parseExpression($extra->getValue(), 'str', Opt_Compiler_Class::ESCAPE_OFF); $prepend = $parsed['bare']; } if(($extra = $node->getAttribute('opt:content-append')) !== null) { - $parsed = $this->_compiler->parseExpression($extra->getValue(), null, Opt_Compiler_Class::ESCAPE_OFF); + $parsed = $this->_compiler->parseExpression($extra->getValue(), 'str', Opt_Compiler_Class::ESCAPE_OFF); $append = $parsed['bare']; } if(($extra = $node->getAttribute('opt:content-display')) !== null) { - $parsed = $this->_compiler->parseExpression($extra->getValue(), null, Opt_Compiler_Class::ESCAPE_OFF); + $parsed = $this->_compiler->parseExpression($extra->getValue(), 'parse', Opt_Compiler_Class::ESCAPE_OFF); $display = $parsed['bare']; } - if($result['complexity'] <= 10 || $display !== null) + if($result['type'] <= Opt_Expression_Interface::SINGLE_VAR || $display !== null) { if($display === null) { diff --git a/lib/Instruction/Root.php b/lib/Instruction/Root.php index cf3bbbc..aba8ccb 100644 --- a/lib/Instruction/Root.php +++ b/lib/Instruction/Root.php @@ -58,7 +58,7 @@ public function processNode(Opt_Xml_Node $node) { if($node->getParent()->getType() != 'Opt_Xml_Root') { - throw new Opt_InstructionInvalidParent_Exception($node->getXmlName(), 'ROOT'); + throw new Opt_Instruction_Exception('opt:root must be the root tag in the document.'); } $params = array( diff --git a/lib/Instruction/Snippet.php b/lib/Instruction/Snippet.php index 96b5f93..0740ad4 100644 --- a/lib/Instruction/Snippet.php +++ b/lib/Instruction/Snippet.php @@ -99,6 +99,16 @@ public function reset() public function _migrateInsert(Opt_Xml_Node $node) { $node->setName('use'); + + if($node->hasAttribute('ignoredefault')) + { + $attribute = $node->getAttribute('ignoredefault'); + $attribute->setName('ignore-default'); + + $node->removeAttribute('ignoredefault'); + $node->addAttribute($attribute); + } + return $node; } // end _migrateInsert(); diff --git a/lib/Xml/Comment.php b/lib/Xml/Comment.php index 227982e..f740c27 100644 --- a/lib/Xml/Comment.php +++ b/lib/Xml/Comment.php @@ -48,6 +48,10 @@ public function preProcess(Opt_Compiler_Class $compiler) { $this->set('hidden', false); } + else + { + $this->set('hidden', true); + } } // end preProcess(); /** diff --git a/tests/Extra/TestFSBase.php b/tests/Extra/TestFSBase.php index e7c28bf..f3fd220 100644 --- a/tests/Extra/TestFSBase.php +++ b/tests/Extra/TestFSBase.php @@ -83,8 +83,6 @@ protected function _checkTest($test) $view = new Opt_View('test.tpl'); if(file_exists('test://data.php')) { - // $code = ; - // echo $code; eval(file_get_contents('test://data.php')); } diff --git a/tests/Package/Instruction/InstructionTest.php b/tests/Package/Instruction/InstructionTest.php index c06a1d4..5405ce0 100644 --- a/tests/Package/Instruction/InstructionTest.php +++ b/tests/Package/Instruction/InstructionTest.php @@ -85,6 +85,25 @@ public static function dataProvider() array('Component/component_inject_snippet.txt'), array('Component/component_nesting.txt'), + // CONTENT + array('Content/content_basic.txt'), + array('Content/content_complex.txt'), + array('Content/content_prepend.txt'), + array('Content/content_append.txt'), + array('Content/content_display.txt'), + array('Content/content_all.txt'), + + // DTD + array('Dtd/dtd_custom.txt'), + array('Dtd/dtd_multiple.txt'), + array('Dtd/dtd_unknown.txt'), + array('Dtd/dtd_xhtml10transitional.txt'), + array('Dtd/dtd_xhtml10strict.txt'), + array('Dtd/dtd_xhtml10frameset.txt'), + array('Dtd/dtd_xhtml11.txt'), + array('Dtd/dtd_html40.txt'), + array('Dtd/dtd_html5.txt'), + // IF array('If/if_basic.txt'), array('If/if_basic_failure.txt'), @@ -107,6 +126,20 @@ public static function dataProvider() array('If/if_new_condition_without_if.txt'), array('OmitTag/omit_tag_basic.txt'), + // PROLOG + array('Prolog/prolog_default.txt'), + array('Prolog/prolog_in_content.txt'), + array('Prolog/prolog_custom_args.txt'), + array('Prolog/prolog_dynamic_version.txt'), + array('Prolog/prolog_dynamic_standalone.txt'), + array('Prolog/prolog_dynamic_encoding.txt'), + + // REPEAT + array('Repeat/repeat_basic.txt'), + array('Repeat/repeat_separator.txt'), + array('Repeat/repeat_separator_2.txt'), + array('Repeat/repeat_iterator.txt'), + // SECTION array('Section/section_basic.txt'), array('Section/section_else.txt'), diff --git a/tests/Package/Instruction/OldInstructionTest.php b/tests/Package/Instruction/OldInstructionTest.php index 0879cff..e3c3fb3 100644 --- a/tests/Package/Instruction/OldInstructionTest.php +++ b/tests/Package/Instruction/OldInstructionTest.php @@ -39,7 +39,7 @@ * @covers Opt_Instruction_Tag * @covers Opt_Instruction_Tree */ -class Package_Instruction_InstructionTest extends Extra_TestFSBase +class Package_Instruction_OldInstructionTest extends Extra_TestFSBase { /** @@ -48,8 +48,11 @@ class Package_Instruction_InstructionTest extends Extra_TestFSBase */ public function configure(Opt_Class $tpl) { - $tpl->parser = 'Opt_Parser_Html'; + $tpl->parser = Opt_Class::HTML_MODE; $tpl->backwardCompatibility = true; + $tpl->printComments = false; + $tpl->stripWhitespaces = false; + $tpl->prologRequired = true; $tpl->register(Opt_Class::OPT_COMPONENT, 'opt:myComponent', 'Extra_Mock_Component'); $tpl->register(Opt_Class::OPT_BLOCK, 'opt:myBlock', 'Extra_Mock_Block'); } // end configure(); @@ -102,6 +105,8 @@ public static function dataProvider() array('component_9.txt'), array('component_10.txt'), array('component_11.txt'), + array('component_12.txt'), + array('component_13.txt'), array('content_1.txt'), array('content_2.txt'), array('dtd_1.txt'), @@ -111,6 +116,8 @@ public static function dataProvider() array('dtd_5.txt'), array('dtd_6.txt'), array('dtd_7.txt'), + array('dtd_8.txt'), + array('dtd_9.txt'), array('extend_1.txt'), array('extend_2.txt'), array('extend_3.txt'), @@ -229,6 +236,8 @@ public static function dataProvider() array('snippet_4.txt'), array('snippet_5.txt'), array('snippet_6.txt'), + array('snippet_7.txt'), + array('snippet_8.txt'), array('tag_1.txt'), array('tag_2.txt'), array('tag_3.txt'), @@ -250,6 +259,6 @@ public static function dataProvider() */ public function testInstructions($testCase) { - return $this->_checkTest(dirname(__FILE__).'/Tests/'.$testCase); + return $this->_checkTest(dirname(__FILE__).'/OldTests/'.$testCase); } // end testInstructions(); -} // end Package_Instruction_InstructionTest; \ No newline at end of file +} // end Package_Instruction_OldInstructionTest; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_1.txt b/tests/Package/Instruction/OldTests/attribute_1.txt new file mode 100644 index 0000000..8aa695d --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_1.txt @@ -0,0 +1,18 @@ +The test checks the basic opt:attribute functionality. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_10.txt b/tests/Package/Instruction/OldTests/attribute_10.txt new file mode 100644 index 0000000..940541e --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_10.txt @@ -0,0 +1,43 @@ +Test the conditional attribute value. + +>>>>templates/test.tpl + + + + + a + b + c + + + + + a + b + c + + + + + a + b + c + + + + +>>>>data.php +$view->val1 = 'foo'; +$view->val2 = 'bar'; +$view->val3 = 'joe'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + + + + + + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_11.txt b/tests/Package/Instruction/OldTests/attribute_11.txt new file mode 100644 index 0000000..14bd27d --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_11.txt @@ -0,0 +1,40 @@ +Test the conditional attribute value + the "value" attribute in opt:attribute. + +>>>>templates/test.tpl + + + + + a + b + + + + + a + b + + + + + a + b + + + + +>>>>data.php +$view->val1 = 'foo'; +$view->val2 = 'bar'; +$view->val3 = 'joe'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + + + + + + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_12.txt b/tests/Package/Instruction/OldTests/attribute_12.txt new file mode 100644 index 0000000..11a0e79 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_12.txt @@ -0,0 +1,33 @@ +Test, if the conditional attribute value works with snippets. + +>>>>templates/test.tpl + + + + a + b + + + a + b + + + + + + + + + +>>>>data.php +$view->val1 = 'foo'; +$view->val2 = 'joe'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + + + + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_13.txt b/tests/Package/Instruction/OldTests/attribute_13.txt new file mode 100644 index 0000000..632d763 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_13.txt @@ -0,0 +1,21 @@ +Test, if the double default value causes an exception - part 1. + +>>>>templates/test.tpl + + + + + a + b + c + + + + +>>>>data.php +$view->val1 = 'foo'; +$view->val2 = 'bar'; +$view->val3 = 'joe'; + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/attribute_14.txt b/tests/Package/Instruction/OldTests/attribute_14.txt new file mode 100644 index 0000000..76025ed --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_14.txt @@ -0,0 +1,22 @@ +Test, if the double default value causes an exception - part 2. + +>>>>templates/test.tpl + + + + + a + b + c + d + + + + +>>>>data.php +$view->val1 = 'foo'; +$view->val2 = 'bar'; +$view->val3 = 'joe'; + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/attribute_15.txt b/tests/Package/Instruction/OldTests/attribute_15.txt new file mode 100644 index 0000000..595f5ea --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_15.txt @@ -0,0 +1,21 @@ +Test, if the other instructions are blocked in opt:value + +>>>>templates/test.tpl + + + + + a ... bar + b + c + + + + +>>>>data.php +$view->val1 = 'foo'; +$view->val2 = 'bar'; +$view->val3 = 'joe'; + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/attribute_16.txt b/tests/Package/Instruction/OldTests/attribute_16.txt new file mode 100644 index 0000000..67ece75 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_16.txt @@ -0,0 +1,13 @@ +Disable duplicated attributes. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/attribute_17.txt b/tests/Package/Instruction/OldTests/attribute_17.txt new file mode 100644 index 0000000..a28e313 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_17.txt @@ -0,0 +1,22 @@ +If the value cannot be calculated, the attribute should not be shown. + +>>>>templates/test.tpl + + + + + a + b + + + + +>>>>data.php +$view->val1 = 'joe'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_2.txt b/tests/Package/Instruction/OldTests/attribute_2.txt new file mode 100644 index 0000000..9940f35 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_2.txt @@ -0,0 +1,19 @@ +The test checks the conditional attributes. + +>>>>templates/test.tpl + + + + + +bar + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_3.txt b/tests/Package/Instruction/OldTests/attribute_3.txt new file mode 100644 index 0000000..2521e0b --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_3.txt @@ -0,0 +1,24 @@ +The test checks the attribute loops. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>data.php +$view->attributes = array(0 => + array('name' => 'abc', 'value' => 'def'), + array('name' => 'ghi', 'value' => 'jkm') +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_4.txt b/tests/Package/Instruction/OldTests/attribute_4.txt new file mode 100644 index 0000000..a9976f7 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_4.txt @@ -0,0 +1,18 @@ +The test checks the "ns" attribute with static strings. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_5.txt b/tests/Package/Instruction/OldTests/attribute_5.txt new file mode 100644 index 0000000..4883c65 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_5.txt @@ -0,0 +1,21 @@ +The test checks the "ns" attribute with a dynamic value + +>>>>templates/test.tpl + + + + +bar + + + +>>>>data.php +$view->ns = 'foo'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_6.txt b/tests/Package/Instruction/OldTests/attribute_6.txt new file mode 100644 index 0000000..43c8690 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_6.txt @@ -0,0 +1,22 @@ +The test checks the "ns" attribute with a dynamic value and dynamic name. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>data.php +$view->ns = 'foo'; +$view->name = 'abc'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_7.txt b/tests/Package/Instruction/OldTests/attribute_7.txt new file mode 100644 index 0000000..1527126 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_7.txt @@ -0,0 +1,22 @@ +The test checks the empty "ns" attribute. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>data.php +$view->ns = null; +$view->name = 'abc'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_8.txt b/tests/Package/Instruction/OldTests/attribute_8.txt new file mode 100644 index 0000000..6aa6970 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_8.txt @@ -0,0 +1,21 @@ +The test checks the static namespace and dynamic name. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>data.php +$view->name = 'abc'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attribute_9.txt b/tests/Package/Instruction/OldTests/attribute_9.txt new file mode 100644 index 0000000..ede1d46 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attribute_9.txt @@ -0,0 +1,13 @@ +opt:attribute must not be added to OPT instructions unless they want to. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/attributes_build_1.txt b/tests/Package/Instruction/OldTests/attributes_build_1.txt new file mode 100644 index 0000000..5bb83fe --- /dev/null +++ b/tests/Package/Instruction/OldTests/attributes_build_1.txt @@ -0,0 +1,23 @@ +The test checks the basic opt:attributes-build functionality. + +>>>>templates/test.tpl + + + +bar + + + +>>>>data.php +$view->input = array( + 'abc' => 'def', + 'foo' => 'bar' +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attributes_build_2.txt b/tests/Package/Instruction/OldTests/attributes_build_2.txt new file mode 100644 index 0000000..a9512db --- /dev/null +++ b/tests/Package/Instruction/OldTests/attributes_build_2.txt @@ -0,0 +1,24 @@ +The test checks the basic opt:attributes-build functionality, if a standard +attribute is present. + +>>>>templates/test.tpl + + + +bar + + + +>>>>data.php +$view->input = array( + 'abc' => 'def', + 'foo' => 'bar' +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/attributes_build_3.txt b/tests/Package/Instruction/OldTests/attributes_build_3.txt new file mode 100644 index 0000000..2f72bc9 --- /dev/null +++ b/tests/Package/Instruction/OldTests/attributes_build_3.txt @@ -0,0 +1,30 @@ +The test checks ignoring attributes. + +>>>>templates/test.tpl + + + +bar + + +bar + + + +>>>>data.php +$view->input = array( + 'abc' => 'def', + 'foo' => 'bar' +); +$view->ignore = array('abc'); + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/block_1.txt b/tests/Package/Instruction/OldTests/block_1.txt new file mode 100644 index 0000000..a7d8976 --- /dev/null +++ b/tests/Package/Instruction/OldTests/block_1.txt @@ -0,0 +1,24 @@ +This test checks the basic block functionality. + +>>>>templates/test.tpl + +FOO + +BAR + +FOO + +>>>>data.php + +$view->block = new Extra_Mock_Block; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO +VIEW PASSED +ON OPEN: 0 +BAR +ON CLOSE +FOO diff --git a/tests/Package/Instruction/OldTests/block_2.txt b/tests/Package/Instruction/OldTests/block_2.txt new file mode 100644 index 0000000..69362cb --- /dev/null +++ b/tests/Package/Instruction/OldTests/block_2.txt @@ -0,0 +1,20 @@ +This test checks the basic block functionality. + +>>>>templates/test.tpl + +FOO + +FOO + +>>>>data.php + +$view->block = new Extra_Mock_Block; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO +VIEW PASSED +ON SINGLE: 0 +FOO diff --git a/tests/Package/Instruction/OldTests/block_3.txt b/tests/Package/Instruction/OldTests/block_3.txt new file mode 100644 index 0000000..74508ba --- /dev/null +++ b/tests/Package/Instruction/OldTests/block_3.txt @@ -0,0 +1,24 @@ +This test checks the basic block functionality. + +>>>>templates/test.tpl + +FOO + +BAR + +FOO + +>>>>data.php + +$view->block = new Extra_Mock_Block; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO +VIEW PASSED +ON OPEN: 1 +HIDING +ON CLOSE +FOO diff --git a/tests/Package/Instruction/OldTests/block_4.txt b/tests/Package/Instruction/OldTests/block_4.txt new file mode 100644 index 0000000..afe94d6 --- /dev/null +++ b/tests/Package/Instruction/OldTests/block_4.txt @@ -0,0 +1,20 @@ +This test checks the basic block functionality. + +>>>>templates/test.tpl + +FOO + +FOO + +>>>>data.php + +$view->block = new Extra_Mock_Block; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO +VIEW PASSED +ON SINGLE: 1 +FOO diff --git a/tests/Package/Instruction/OldTests/block_5.txt b/tests/Package/Instruction/OldTests/block_5.txt new file mode 100644 index 0000000..e9e040b --- /dev/null +++ b/tests/Package/Instruction/OldTests/block_5.txt @@ -0,0 +1,20 @@ +This test checks the defined blocks. + +>>>>templates/test.tpl + +FOO + +BAR + +FOO + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO +VIEW PASSED +ON OPEN: 0 +BAR +ON CLOSE +FOO diff --git a/tests/Package/Instruction/OldTests/capture_1.txt b/tests/Package/Instruction/OldTests/capture_1.txt new file mode 100644 index 0000000..682375a --- /dev/null +++ b/tests/Package/Instruction/OldTests/capture_1.txt @@ -0,0 +1,17 @@ +The test checks the basic opt:capture functionality. + +>>>>templates/test.tpl + + +{@foo is 5} + +FOO: {@foo} + +{$system.capture.capt} + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO: 5 \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/capture_2.txt b/tests/Package/Instruction/OldTests/capture_2.txt new file mode 100644 index 0000000..bb47827 --- /dev/null +++ b/tests/Package/Instruction/OldTests/capture_2.txt @@ -0,0 +1,18 @@ +The test checks if the captured content does not change. + +>>>>templates/test.tpl + + +{@foo is 5} + +FOO: {@foo} + +{@foo is 6} +{$system.capture.capt} + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO: 5 \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/capture_3.txt b/tests/Package/Instruction/OldTests/capture_3.txt new file mode 100644 index 0000000..7292551 --- /dev/null +++ b/tests/Package/Instruction/OldTests/capture_3.txt @@ -0,0 +1,18 @@ +Tests the opt:capture attribute. + +>>>>templates/test.tpl + + +Bar +BAR +{u:$system.capture.capt} +{u:$system.capture.capt} + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BAR +Bar +Bar \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/capture_4.txt b/tests/Package/Instruction/OldTests/capture_4.txt new file mode 100644 index 0000000..79b44c9 --- /dev/null +++ b/tests/Package/Instruction/OldTests/capture_4.txt @@ -0,0 +1,23 @@ +Dynamically chosen capture parts and opt:insert. + +>>>>templates/test.tpl + + +Bar +BAR + + +

Default content

+
+
+ +>>>>data.php +$view->captured = 'capt'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BAR +Bar +Bar \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/capture_5.txt b/tests/Package/Instruction/OldTests/capture_5.txt new file mode 100644 index 0000000..ccd1a1c --- /dev/null +++ b/tests/Package/Instruction/OldTests/capture_5.txt @@ -0,0 +1,21 @@ +Dynamically chosen capture parts and opt:insert - the captured part does not exist. + +>>>>templates/test.tpl + + +BAR + + +

Default content

+
+
+ +>>>>data.php +$view->captured = 'capt'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BAR +

Default content

\ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/capture_6.txt b/tests/Package/Instruction/OldTests/capture_6.txt new file mode 100644 index 0000000..250d68c --- /dev/null +++ b/tests/Package/Instruction/OldTests/capture_6.txt @@ -0,0 +1,10 @@ +The tests checks, if the attribute opt:capture throws an exception for invalid identifiers. + +>>>>templates/test.tpl + + +

foo

+
+ +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/component_1.txt b/tests/Package/Instruction/OldTests/component_1.txt new file mode 100644 index 0000000..be6ba77 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_1.txt @@ -0,0 +1,21 @@ +This test checks the basic component functionality. + +>>>>templates/test.tpl + + + +{$system.component.foo} + + +>>>>data.php + +$view->component = new Extra_Mock_Component; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +PARAM foo PASSED +PARAM foo RETURNED +bar diff --git a/tests/Package/Instruction/OldTests/component_10.txt b/tests/Package/Instruction/OldTests/component_10.txt new file mode 100644 index 0000000..f1ee292 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_10.txt @@ -0,0 +1,24 @@ +This test checks the attribute management with opt:component-attributes. + +>>>>templates/test.tpl + + +
+Foo. +
+
+ +>>>>data.php + +$view->component = new Extra_Mock_Component; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +ATTRIBUTE MANAGEMENT FOR: div#name +foo: bar +
+Foo. +
diff --git a/tests/Package/Instruction/OldTests/component_11.txt b/tests/Package/Instruction/OldTests/component_11.txt new file mode 100644 index 0000000..26bec60 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_11.txt @@ -0,0 +1,25 @@ +opt: attributes in :com should be skipped. + +>>>>templates/test.tpl + + + +Foo. + + + +>>>>data.php + +$view->component = new Extra_Mock_Component; +$view->foo = true; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +ATTRIBUTE MANAGEMENT FOR: div +foo: bar +
+Foo. +
diff --git a/tests/Package/Instruction/OldTests/component_12.txt b/tests/Package/Instruction/OldTests/component_12.txt new file mode 100644 index 0000000..ac87a2d --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_12.txt @@ -0,0 +1,25 @@ +opt: attributes in :com should be skipped. + +>>>>templates/test.tpl + + +
+Foo. +
+
+ +>>>>data.php + +$view->component = new Extra_Mock_Component; +$view->foo = true; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +ATTRIBUTE MANAGEMENT FOR: div#yes +foo: bar joe-goo +
+Foo. +
diff --git a/tests/Package/Instruction/OldTests/component_13.txt b/tests/Package/Instruction/OldTests/component_13.txt new file mode 100644 index 0000000..ddbceba --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_13.txt @@ -0,0 +1,36 @@ +What happens if two components are nested one in another? + +>>>>templates/test.tpl + + + + + +{$system.component.foo} + + + +{$system.component.foo} + + + + + + +>>>>data.php + +$view->component = new Extra_Mock_Component; +$view->component2 = new Extra_Mock_Component; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +PARAM foo PASSED +PARAM foo RETURNED +bar +VIEW PASSED +PARAM foo PASSED +PARAM foo RETURNED +joe diff --git a/tests/Package/Instruction/OldTests/component_2.txt b/tests/Package/Instruction/OldTests/component_2.txt new file mode 100644 index 0000000..ad3bfdc --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_2.txt @@ -0,0 +1,18 @@ +This test checks the datasource attribute. + +>>>>templates/test.tpl + + + + +>>>>data.php + +$view->component = new myComponent; +$view->datasource = array('foo' => 'bar'); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +DATASOURCE PASSED diff --git a/tests/Package/Instruction/OldTests/component_3.txt b/tests/Package/Instruction/OldTests/component_3.txt new file mode 100644 index 0000000..055ca3b --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_3.txt @@ -0,0 +1,19 @@ +This test checks displaying the component (without attributes). + +>>>>templates/test.tpl + + + + + +>>>>data.php + +$view->component = new Extra_Mock_Component; +$view->datasource = array('foo' => 'bar'); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +COMPONENT DISPLAYED \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/component_4.txt b/tests/Package/Instruction/OldTests/component_4.txt new file mode 100644 index 0000000..c7b7b75 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_4.txt @@ -0,0 +1,19 @@ +This test checks displaying the component (with attributes). + +>>>>templates/test.tpl + + + + + +>>>>data.php + +$view->component = new Extra_Mock_Component; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +COMPONENT DISPLAYED WITH: +foo: bar \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/component_5.txt b/tests/Package/Instruction/OldTests/component_5.txt new file mode 100644 index 0000000..5287d87 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_5.txt @@ -0,0 +1,25 @@ +This test checks the component events. + +>>>>templates/test.tpl + + + +Not displayed. + + +Displayed. + + + +>>>>data.php + +$view->component = new Extra_Mock_Component; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +FALSE EVENT CHECKED +TRUE EVENT LAUNCHED +Displayed. diff --git a/tests/Package/Instruction/OldTests/component_6.txt b/tests/Package/Instruction/OldTests/component_6.txt new file mode 100644 index 0000000..46d8e81 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_6.txt @@ -0,0 +1,24 @@ +This test checks the attribute management. + +>>>>templates/test.tpl + + + +Foo. + + + +>>>>data.php + +$view->component = new Extra_Mock_Component; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +ATTRIBUTE MANAGEMENT FOR: div +foo: bar +
+Foo. +
diff --git a/tests/Package/Instruction/OldTests/component_7.txt b/tests/Package/Instruction/OldTests/component_7.txt new file mode 100644 index 0000000..2587a11 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_7.txt @@ -0,0 +1,16 @@ +This test checks the empty parameter values (bug #63). The template should +be executed properly. + +>>>>templates/test.tpl + + + +FOO + + +>>>>data.php + +$view->component = new Extra_Mock_Component; + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/component_8.txt b/tests/Package/Instruction/OldTests/component_8.txt new file mode 100644 index 0000000..468c210 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_8.txt @@ -0,0 +1,29 @@ +This test checks the multiple components (potential bug #62) + +>>>>templates/test.tpl + + + +

{$opt.component.title}

+
+ +

{$opt.component.title}

+
+
+ +>>>>data.php + +$view->c1 = new Extra_Mock_Component; +$view->c1->set('title', 'FOO'); + +$view->c2 = new Extra_Mock_Component; +$view->c2->set('title', 'BAR'); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +

PARAM title RETURNEDFOO

+VIEW PASSED +

PARAM title RETURNEDBAR

\ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/component_9.txt b/tests/Package/Instruction/OldTests/component_9.txt new file mode 100644 index 0000000..08d43c9 --- /dev/null +++ b/tests/Package/Instruction/OldTests/component_9.txt @@ -0,0 +1,17 @@ +The test checks the defined components. + +>>>>templates/test.tpl + + + +{$system.component.foo} + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +VIEW PASSED +PARAM foo PASSED +PARAM foo RETURNED +bar diff --git a/tests/Package/Instruction/Tests/Content/content_1.txt b/tests/Package/Instruction/OldTests/content_1.txt similarity index 100% rename from tests/Package/Instruction/Tests/Content/content_1.txt rename to tests/Package/Instruction/OldTests/content_1.txt diff --git a/tests/Package/Instruction/Tests/Content/content_2.txt b/tests/Package/Instruction/OldTests/content_2.txt similarity index 100% rename from tests/Package/Instruction/Tests/Content/content_2.txt rename to tests/Package/Instruction/OldTests/content_2.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_1.txt b/tests/Package/Instruction/OldTests/dtd_1.txt similarity index 100% rename from tests/Package/Instruction/Tests/Dtd/dtd_1.txt rename to tests/Package/Instruction/OldTests/dtd_1.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_2.txt b/tests/Package/Instruction/OldTests/dtd_2.txt similarity index 100% rename from tests/Package/Instruction/Tests/Dtd/dtd_2.txt rename to tests/Package/Instruction/OldTests/dtd_2.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_3.txt b/tests/Package/Instruction/OldTests/dtd_3.txt similarity index 100% rename from tests/Package/Instruction/Tests/Dtd/dtd_3.txt rename to tests/Package/Instruction/OldTests/dtd_3.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_4.txt b/tests/Package/Instruction/OldTests/dtd_4.txt similarity index 100% rename from tests/Package/Instruction/Tests/Dtd/dtd_4.txt rename to tests/Package/Instruction/OldTests/dtd_4.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_5.txt b/tests/Package/Instruction/OldTests/dtd_5.txt similarity index 100% rename from tests/Package/Instruction/Tests/Dtd/dtd_5.txt rename to tests/Package/Instruction/OldTests/dtd_5.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_6.txt b/tests/Package/Instruction/OldTests/dtd_6.txt similarity index 100% rename from tests/Package/Instruction/Tests/Dtd/dtd_6.txt rename to tests/Package/Instruction/OldTests/dtd_6.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_7.txt b/tests/Package/Instruction/OldTests/dtd_7.txt similarity index 100% rename from tests/Package/Instruction/Tests/Dtd/dtd_7.txt rename to tests/Package/Instruction/OldTests/dtd_7.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_8.txt b/tests/Package/Instruction/OldTests/dtd_8.txt similarity index 100% rename from tests/Package/Instruction/Tests/Dtd/dtd_8.txt rename to tests/Package/Instruction/OldTests/dtd_8.txt diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_9.txt b/tests/Package/Instruction/OldTests/dtd_9.txt similarity index 86% rename from tests/Package/Instruction/Tests/Dtd/dtd_9.txt rename to tests/Package/Instruction/OldTests/dtd_9.txt index 1c1863c..1400c24 100644 --- a/tests/Package/Instruction/Tests/Dtd/dtd_9.txt +++ b/tests/Package/Instruction/OldTests/dtd_9.txt @@ -7,4 +7,4 @@ Strange template - opt:dtd should report an exception. >>>>expected.txt -Opt_InvalidValue_Exception +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/extend_1.txt b/tests/Package/Instruction/OldTests/extend_1.txt new file mode 100644 index 0000000..526e22c --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_1.txt @@ -0,0 +1,25 @@ +Check the basic inheritance features. + +>>>>templates/test.tpl + + + +SNIPPET-VALUE + + + +>>>>templates/extended1.tpl + + +BEGIN + +END + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN +SNIPPET-VALUE +END diff --git a/tests/Package/Instruction/OldTests/extend_10.txt b/tests/Package/Instruction/OldTests/extend_10.txt new file mode 100644 index 0000000..2ac45cc --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_10.txt @@ -0,0 +1,33 @@ +The dynamic inheritance is allowed, but we do not use it. + +>>>>templates/test.tpl + + + +SNIPPET-VALUE + + + +>>>>templates/extended1.tpl + + +BEGIN + +END + + +>>>>templates/dynamic1.tpl + + +BEGIN-DYNAMIC + +END-DYNAMIC + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN +SNIPPET-VALUE +END diff --git a/tests/Package/Instruction/OldTests/extend_11.txt b/tests/Package/Instruction/OldTests/extend_11.txt new file mode 100644 index 0000000..fec8b59 --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_11.txt @@ -0,0 +1,50 @@ +Check more compound inheritance chains. + +>>>>templates/test.tpl + + + +FOO-VALUE1 + + + +>>>>templates/extended1.tpl + + + +FOO-VALUE2 + + +GOO-VALUE2 + + + +>>>>templates/extended2.tpl + + +BEGIN + + +END + + +>>>>templates/dynamic2.tpl + + +BEGIN-DYNAMIC + + +END-DYNAMIC + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN-DYNAMIC +FOO-VALUE1 +GOO-VALUE2 +END-DYNAMIC + +>>>>data.php +$view->inherit('extended1.tpl', 'dynamic2.tpl'); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/extend_12.txt b/tests/Package/Instruction/OldTests/extend_12.txt new file mode 100644 index 0000000..31ec3d1 --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_12.txt @@ -0,0 +1,24 @@ +The test checks whether the order of snippets does not play any role. The test +was made according to the bug #61. + +>>>>templates/test.tpl + + +C +A +B + + +>>>>templates/a.tpl + + +FAIL +FAIL +FAIL + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +ABC \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/extend_2.txt b/tests/Package/Instruction/OldTests/extend_2.txt new file mode 100644 index 0000000..4d4beff --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_2.txt @@ -0,0 +1,38 @@ +Check more compound inheritance chains. + +>>>>templates/test.tpl + + + +FOO-VALUE1 + + + +>>>>templates/extended1.tpl + + + +FOO-VALUE2 + + +GOO-VALUE2 + + + +>>>>templates/extended2.tpl + + +BEGIN + + +END + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN +FOO-VALUE1 +GOO-VALUE2 +END diff --git a/tests/Package/Instruction/OldTests/extend_3.txt b/tests/Package/Instruction/OldTests/extend_3.txt new file mode 100644 index 0000000..4a7a978 --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_3.txt @@ -0,0 +1,40 @@ +Check more compound inheritance chains with importing parent contents. + +>>>>templates/test.tpl + + + +FOO-VALUE1 + + + + +>>>>templates/extended1.tpl + + + +FOO-VALUE2 + + +GOO-VALUE2 + + + +>>>>templates/extended2.tpl + + +BEGIN + + +END + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN +FOO-VALUE1 +FOO-VALUE2 +GOO-VALUE2 +END diff --git a/tests/Package/Instruction/OldTests/extend_4.txt b/tests/Package/Instruction/OldTests/extend_4.txt new file mode 100644 index 0000000..bbb7dfb --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_4.txt @@ -0,0 +1,20 @@ +Check the detection of infinite recursion. + +>>>>templates/test.tpl + + + +FOO-VALUE1 + + + +>>>>templates/extended1.tpl + + + +FOO-VALUE2 + + + +>>>>expected.txt +Opt_Compiler_Recursion_Exception \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/extend_5.txt b/tests/Package/Instruction/OldTests/extend_5.txt new file mode 100644 index 0000000..6e3941d --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_5.txt @@ -0,0 +1,47 @@ +Check the branches - case 1: the branch is not set. + +>>>>templates/test.tpl + + + +FOO-VALUE1 + + + +>>>>templates/extended1.tpl + + + +FOO-VALUE2 + + +GOO-VALUE2 + + + +>>>>templates/extended2.tpl + + +BEGIN + + +END + + +>>>>templates/branch1.tpl + + +BEGIN-BRANCH + + +END-BRANCH + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN +FOO-VALUE1 +GOO-VALUE2 +END diff --git a/tests/Package/Instruction/OldTests/extend_6.txt b/tests/Package/Instruction/OldTests/extend_6.txt new file mode 100644 index 0000000..6f25d7e --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_6.txt @@ -0,0 +1,49 @@ +Check the branches - case 2: the branch is set and we must follow it. + +>>>>templates/test.tpl + + + +FOO-VALUE1 + + + +>>>>templates/extended1.tpl + + + +FOO-VALUE2 + + +GOO-VALUE2 + + + +>>>>templates/extended2.tpl + + +BEGIN + + +END + + +>>>>templates/branch1.tpl + + +BEGIN-BRANCH + + +END-BRANCH + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN-BRANCH +FOO-VALUE1 +END-BRANCH + +>>>>data.php +$view->setBranch('branch'); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/extend_7.txt b/tests/Package/Instruction/OldTests/extend_7.txt new file mode 100644 index 0000000..baef0bc --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_7.txt @@ -0,0 +1,54 @@ +Check the branches - case 3: the branch is set, but some templates do not have it defined. + +>>>>templates/test.tpl + + + +FOO-VALUE1 + + + + +>>>>templates/extended1.tpl + + + +FOO-VALUE2 + + +GOO-VALUE2 + + + +>>>>templates/extended2.tpl + + +BEGIN + + +END + + +>>>>templates/branch1.tpl + + + +FOO-VALUE2-BRANCH + + +GOO-VALUE2-BRANCH + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN +FOO-VALUE1 +FOO-VALUE2-BRANCH +GOO-VALUE2-BRANCH +END + +>>>>data.php +$view->setBranch('branch'); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/extend_8.txt b/tests/Package/Instruction/OldTests/extend_8.txt new file mode 100644 index 0000000..4324749 --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_8.txt @@ -0,0 +1,23 @@ +Check if extending snippets work. + +>>>>templates/test.tpl + + + +SNIPPET-VALUE + + + +BEGIN + +END + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN +SNIPPET-VALUE +END diff --git a/tests/Package/Instruction/OldTests/extend_9.txt b/tests/Package/Instruction/OldTests/extend_9.txt new file mode 100644 index 0000000..efb176e --- /dev/null +++ b/tests/Package/Instruction/OldTests/extend_9.txt @@ -0,0 +1,36 @@ +Check the dynamic inheritance. + +>>>>templates/test.tpl + + + +SNIPPET-VALUE + + + +>>>>templates/extended1.tpl + + +BEGIN + +END + + +>>>>templates/dynamic1.tpl + + +BEGIN-DYNAMIC + +END-DYNAMIC + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +BEGIN-DYNAMIC +SNIPPET-VALUE +END-DYNAMIC + +>>>>data.php +$view->inherit('dynamic1.tpl'); diff --git a/tests/Package/Instruction/OldTests/for_1.txt b/tests/Package/Instruction/OldTests/for_1.txt new file mode 100644 index 0000000..c58b53f --- /dev/null +++ b/tests/Package/Instruction/OldTests/for_1.txt @@ -0,0 +1,25 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +{@i}:: + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +0:: +1:: +2:: +3:: +4:: +5:: +6:: +7:: +8:: +9:: \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/for_2.txt b/tests/Package/Instruction/OldTests/for_2.txt new file mode 100644 index 0000000..1d73b97 --- /dev/null +++ b/tests/Package/Instruction/OldTests/for_2.txt @@ -0,0 +1,25 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +{@i} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +0:: +1:: +2:: +3:: +4:: +5:: +6:: +7:: +8:: +9 \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/for_3.txt b/tests/Package/Instruction/OldTests/for_3.txt new file mode 100644 index 0000000..91181c1 --- /dev/null +++ b/tests/Package/Instruction/OldTests/for_3.txt @@ -0,0 +1,26 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +:: +{@i} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +0:: +1:: +2:: +3:: +4:: +5:: +6:: +7:: +8:: +9 \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_1.txt b/tests/Package/Instruction/OldTests/foreach_1.txt new file mode 100644 index 0000000..d821909 --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_1.txt @@ -0,0 +1,23 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +{@idx},{@val}:: + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +key1,Value 1::key2,Value 2::key3,Value 3::key4,Value 4:: +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_10.txt b/tests/Package/Instruction/OldTests/foreach_10.txt new file mode 100644 index 0000000..df93711 --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_10.txt @@ -0,0 +1,26 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + + +NO DATA + +{@idx},{@val} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +key1,Value 1::key2,Value 2::key3,Value 3::key4,Value 4 +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_2.txt b/tests/Package/Instruction/OldTests/foreach_2.txt new file mode 100644 index 0000000..447b1bd --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_2.txt @@ -0,0 +1,23 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +{@val}:: + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Value 1::Value 2::Value 3::Value 4:: +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_3.txt b/tests/Package/Instruction/OldTests/foreach_3.txt new file mode 100644 index 0000000..37be317 --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_3.txt @@ -0,0 +1,20 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +{@idx}:: + + + +>>>>expected.txt +Opt_Instruction_Exception +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_4.txt b/tests/Package/Instruction/OldTests/foreach_4.txt new file mode 100644 index 0000000..8e79b02 --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_4.txt @@ -0,0 +1,23 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +{@idx},{@val} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +key1,Value 1::key2,Value 2::key3,Value 3::key4,Value 4 +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_5.txt b/tests/Package/Instruction/OldTests/foreach_5.txt new file mode 100644 index 0000000..69f5c59 --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_5.txt @@ -0,0 +1,24 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +:: +{@idx},{@val} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +key1,Value 1::key2,Value 2::key3,Value 3::key4,Value 4 +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_6.txt b/tests/Package/Instruction/OldTests/foreach_6.txt new file mode 100644 index 0000000..8384e22 --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_6.txt @@ -0,0 +1,26 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +{@idx},{@val}:: + +NO DATA + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +key1,Value 1::key2,Value 2::key3,Value 3::key4,Value 4:: +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_7.txt b/tests/Package/Instruction/OldTests/foreach_7.txt new file mode 100644 index 0000000..0ad4208 --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_7.txt @@ -0,0 +1,26 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + + +NO DATA + +{@idx},{@val}:: + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +key1,Value 1::key2,Value 2::key3,Value 3::key4,Value 4:: +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_8.txt b/tests/Package/Instruction/OldTests/foreach_8.txt new file mode 100644 index 0000000..e79d33a --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_8.txt @@ -0,0 +1,26 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + + +NO DATA + +{@idx},{@val}:: + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NO DATA +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/foreach_9.txt b/tests/Package/Instruction/OldTests/foreach_9.txt new file mode 100644 index 0000000..0b2e3df --- /dev/null +++ b/tests/Package/Instruction/OldTests/foreach_9.txt @@ -0,0 +1,26 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + + +NO DATA + +{@idx},{@val} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NO DATA +>>>>data.php + $view->data = array( + 'key1' => 'Value 1', + 'key2' => 'Value 2', + 'key3' => 'Value 3', + 'key4' => 'Value 4' + ); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/grid_1.txt b/tests/Package/Instruction/OldTests/grid_1.txt new file mode 100644 index 0000000..09a6cdb --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_1.txt @@ -0,0 +1,47 @@ +The test checks the basic opt:grid functionality. + +>>>>templates/test.tpl + + + +:ROW START + +{$items.foo} + + +Empty + +:ROW END + + + +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), + array('foo' => 'item 4'), + array('foo' => 'item 5'), + array('foo' => 'item 6'), + array('foo' => 'item 7') +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:ROW START +item 1 +item 2 +item 3 +:ROW END +:ROW START +item 4 +item 5 +item 6 +:ROW END +:ROW START +item 7 +Empty +Empty +:ROW END \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/grid_2.txt b/tests/Package/Instruction/OldTests/grid_2.txt new file mode 100644 index 0000000..59b3461 --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_2.txt @@ -0,0 +1,49 @@ +The test checks the basic opt:grid functionality. + +>>>>templates/test.tpl + + + +:ROW START + +{$items.foo} + + +Empty + +:ROW END + + + +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), + array('foo' => 'item 4'), + array('foo' => 'item 5'), + array('foo' => 'item 6'), + array('foo' => 'item 7'), + array('foo' => 'item 8'), + array('foo' => 'item 9') +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:ROW START +item 1 +item 2 +item 3 +:ROW END +:ROW START +item 4 +item 5 +item 6 +:ROW END +:ROW START +item 7 +item 8 +item 9 +:ROW END \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/grid_3.txt b/tests/Package/Instruction/OldTests/grid_3.txt new file mode 100644 index 0000000..16cb981 --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_3.txt @@ -0,0 +1,34 @@ +Test whether the section is started in a valid place. + +>>>>templates/test.tpl + + + +:ROW START + + + +{$items.foo} + + +Empty + +:ROW END + + + +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), + array('foo' => 'item 4'), + array('foo' => 'item 5'), + array('foo' => 'item 6'), + array('foo' => 'item 7'), + array('foo' => 'item 8'), + array('foo' => 'item 9') +); + +>>>>expected.txt +Opt_Instruction_Section_Exception diff --git a/tests/Package/Instruction/OldTests/grid_4.txt b/tests/Package/Instruction/OldTests/grid_4.txt new file mode 100644 index 0000000..d914e06 --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_4.txt @@ -0,0 +1,34 @@ +Test whether the section is started in a valid place. + +>>>>templates/test.tpl + + + +:ROW START + +{$items.foo} + + +Empty + + + +:ROW END + + + +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), + array('foo' => 'item 4'), + array('foo' => 'item 5'), + array('foo' => 'item 6'), + array('foo' => 'item 7'), + array('foo' => 'item 8'), + array('foo' => 'item 9') +); + +>>>>expected.txt +Opt_Instruction_Section_Exception diff --git a/tests/Package/Instruction/OldTests/grid_5.txt b/tests/Package/Instruction/OldTests/grid_5.txt new file mode 100644 index 0000000..a1a9e52 --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_5.txt @@ -0,0 +1,51 @@ +Test whether the section is started in a valid place. + +>>>>templates/test.tpl + + + +:ROW START + +{$items.foo} + + + + +Empty + +:ROW END + + + +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), + array('foo' => 'item 4'), + array('foo' => 'item 5'), + array('foo' => 'item 6'), + array('foo' => 'item 7'), + array('foo' => 'item 8'), + array('foo' => 'item 9') +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:ROW START +item 1 +item 2 +item 3 +:ROW END +:ROW START +item 4 +item 5 +item 6 +:ROW END +:ROW START +item 7 +item 8 +item 9 +:ROW END \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/grid_6.txt b/tests/Package/Instruction/OldTests/grid_6.txt new file mode 100644 index 0000000..022942c --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_6.txt @@ -0,0 +1,53 @@ +Test if the grid works with snippets. + +>>>>templates/test.tpl + + + +:ROW START + +{$snip.foo} + + + + +Empty + +:ROW END + + + + + +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), + array('foo' => 'item 4'), + array('foo' => 'item 5'), + array('foo' => 'item 6'), + array('foo' => 'item 7'), + array('foo' => 'item 8'), + array('foo' => 'item 9') +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:ROW START +item 1 +item 2 +item 3 +:ROW END +:ROW START +item 4 +item 5 +item 6 +:ROW END +:ROW START +item 7 +item 8 +item 9 +:ROW END \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/grid_7.txt b/tests/Package/Instruction/OldTests/grid_7.txt new file mode 100644 index 0000000..7270046 --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_7.txt @@ -0,0 +1,51 @@ +Test if the grid works with snippets - part two. + +>>>>templates/test.tpl + + + +FOO:{$snip.foo} + + +:ROW START + + + +Empty + +:ROW END + + + +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), + array('foo' => 'item 4'), + array('foo' => 'item 5'), + array('foo' => 'item 6'), + array('foo' => 'item 7'), + array('foo' => 'item 8'), + array('foo' => 'item 9') +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:ROW START +FOO:item 1 +FOO:item 2 +FOO:item 3 +:ROW END +:ROW START +FOO:item 4 +FOO:item 5 +FOO:item 6 +:ROW END +:ROW START +FOO:item 7 +FOO:item 8 +FOO:item 9 +:ROW END \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/grid_8.txt b/tests/Package/Instruction/OldTests/grid_8.txt new file mode 100644 index 0000000..eb2eeac --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_8.txt @@ -0,0 +1,49 @@ +The test checks the opt:grid cooperation with HTML tags. + +>>>>templates/test.tpl + + + + + + + + + + + +
{$items.foo}
+
+ +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), + array('foo' => 'item 4'), + array('foo' => 'item 5'), + array('foo' => 'item 6'), + array('foo' => 'item 7') +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt + + + + + + + + + + + + + + + + +
item 1item 2item 3
item 4item 5item 6
item 7
\ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/grid_9.txt b/tests/Package/Instruction/OldTests/grid_9.txt new file mode 100644 index 0000000..e5bac27 --- /dev/null +++ b/tests/Package/Instruction/OldTests/grid_9.txt @@ -0,0 +1,33 @@ +The test checks the basic opt:grid functionality with only one row. + +>>>>templates/test.tpl + + + +:ROW START + +{$items.foo} + + +Empty + +:ROW END + + + +>>>>data.php +$view->items = array( + array('foo' => 'item 1'), + array('foo' => 'item 2'), + array('foo' => 'item 3'), +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:ROW START +item 1 +item 2 +item 3 +:ROW END \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_1.txt b/tests/Package/Instruction/OldTests/if_1.txt new file mode 100644 index 0000000..119fa31 --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_1.txt @@ -0,0 +1,19 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +OK +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_10.txt b/tests/Package/Instruction/OldTests/if_10.txt new file mode 100644 index 0000000..32bc936 --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_10.txt @@ -0,0 +1,27 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + +NICE + +VAL1 + +FAIL + +VAL2 + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FAIL +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_2.txt b/tests/Package/Instruction/OldTests/if_2.txt new file mode 100644 index 0000000..42c6b6e --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_2.txt @@ -0,0 +1,18 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_3.txt b/tests/Package/Instruction/OldTests/if_3.txt new file mode 100644 index 0000000..38804c9 --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_3.txt @@ -0,0 +1,22 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + +FAIL + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +OK +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_4.txt b/tests/Package/Instruction/OldTests/if_4.txt new file mode 100644 index 0000000..548782e --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_4.txt @@ -0,0 +1,22 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + +FAIL + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FAIL +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_5.txt b/tests/Package/Instruction/OldTests/if_5.txt new file mode 100644 index 0000000..34cc5bb --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_5.txt @@ -0,0 +1,25 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + +NICE + + +FAIL + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FAIL +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_6.txt b/tests/Package/Instruction/OldTests/if_6.txt new file mode 100644 index 0000000..5c1f65c --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_6.txt @@ -0,0 +1,25 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + +NICE + + +FAIL + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NICE +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_7.txt b/tests/Package/Instruction/OldTests/if_7.txt new file mode 100644 index 0000000..bdf7aa5 --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_7.txt @@ -0,0 +1,25 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + +NICE + + +FAIL + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +OK +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_8.txt b/tests/Package/Instruction/OldTests/if_8.txt new file mode 100644 index 0000000..bee458c --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_8.txt @@ -0,0 +1,27 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + +NICE + +VAL1 + +FAIL + +VAL2 + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +OKVAL1VAL2 +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/if_9.txt b/tests/Package/Instruction/OldTests/if_9.txt new file mode 100644 index 0000000..640d49b --- /dev/null +++ b/tests/Package/Instruction/OldTests/if_9.txt @@ -0,0 +1,27 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +OK + +NICE + +VAL1 + +FAIL + +VAL2 + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NICE +>>>>data.php + $view->assign('ok', true); + $view->assign('fail', false); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/include_1.txt b/tests/Package/Instruction/OldTests/include_1.txt new file mode 100644 index 0000000..02295c3 --- /dev/null +++ b/tests/Package/Instruction/OldTests/include_1.txt @@ -0,0 +1,22 @@ +Check the opt:include "file" attribute. It should include a template. + +>>>>templates/test.tpl + + + +Foo + + + +>>>>templates/included.tpl + + + +Bar + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooBar \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/include_2.txt b/tests/Package/Instruction/OldTests/include_2.txt new file mode 100644 index 0000000..3cd18d0 --- /dev/null +++ b/tests/Package/Instruction/OldTests/include_2.txt @@ -0,0 +1,24 @@ +Check the opt:include "view" attribute. It should parse an external view. + +>>>>templates/test.tpl + + + +Foo + + + +>>>>templates/included.tpl + + + +Bar + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooBar +>>>>data.php +$view->view = new Opt_View('included.tpl'); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/include_3.txt b/tests/Package/Instruction/OldTests/include_3.txt new file mode 100644 index 0000000..d4952f4 --- /dev/null +++ b/tests/Package/Instruction/OldTests/include_3.txt @@ -0,0 +1,30 @@ +Load the views from a section. + +>>>>templates/test.tpl + + + +Foo + + + + + +>>>>templates/included.tpl + + + +Bar + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooBarBarBar +>>>>data.php +$view->views = array(0 => + array('view' => new Opt_View('included.tpl')), + array('view' => new Opt_View('included.tpl')), + array('view' => new Opt_View('included.tpl')) +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/include_4.txt b/tests/Package/Instruction/OldTests/include_4.txt new file mode 100644 index 0000000..8d09d7a --- /dev/null +++ b/tests/Package/Instruction/OldTests/include_4.txt @@ -0,0 +1,24 @@ +The variable set for the main view must not be visible in the included view. + +>>>>templates/test.tpl + + + +Foo{$variable} + + + +>>>>templates/included.tpl + + + +Bar{$variable} + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooFooBar +>>>>data.php +$view->variable = 'Foo'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/include_5.txt b/tests/Package/Instruction/OldTests/include_5.txt new file mode 100644 index 0000000..2a4d3c3 --- /dev/null +++ b/tests/Package/Instruction/OldTests/include_5.txt @@ -0,0 +1,31 @@ +In both of the views, the variables should have different values. + +>>>>templates/test.tpl + + + +Foo{$variable1}{$variable2} + + + +>>>>templates/included.tpl + + + +Bar{$variable1}{$variable2} + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooABBarCD + +>>>>data.php +$view2 = new Opt_View('included.tpl'); +$view2->variable1='C'; +$view2->variable2='D'; + +$view->view = $view2; +$view->variable1='A'; +$view->variable2='B'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/include_6.txt b/tests/Package/Instruction/OldTests/include_6.txt new file mode 100644 index 0000000..c5c80ea --- /dev/null +++ b/tests/Package/Instruction/OldTests/include_6.txt @@ -0,0 +1,24 @@ +In both of the views the variable should have the same value, as the variables are imported. + +>>>>templates/test.tpl + + + +Foo{$variable} + + + +>>>>templates/included.tpl + + + +Bar{$variable} + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooABarA +>>>>data.php +$view->variable = 'A'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/include_7.txt b/tests/Package/Instruction/OldTests/include_7.txt new file mode 100644 index 0000000..16e7860 --- /dev/null +++ b/tests/Package/Instruction/OldTests/include_7.txt @@ -0,0 +1,30 @@ +The variable "variable2" must be imported to the included view. + +>>>>templates/test.tpl + + + +Foo{$variable1}{$variable2} + + + +>>>>templates/included.tpl + + + +Bar{$variable1}{$variable2} + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooABBarCB +>>>>data.php +$view2 = new Opt_View('included.tpl'); +$view2->variable1='C'; +$view2->variable2='D'; + +$view->view = $view2; +$view->variable1='A'; +$view->variable2='B'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/include_8.txt b/tests/Package/Instruction/OldTests/include_8.txt new file mode 100644 index 0000000..d43f522 --- /dev/null +++ b/tests/Package/Instruction/OldTests/include_8.txt @@ -0,0 +1,20 @@ +Check the opt:include "view" attribute behaviour, if the object is not a valid +view. + +>>>>templates/test.tpl + + + +Foo + +Sorry + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooSorry +>>>>data.php +$view->view = 'Foo'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/insert_1.txt b/tests/Package/Instruction/OldTests/insert_1.txt new file mode 100644 index 0000000..a6cf1e9 --- /dev/null +++ b/tests/Package/Instruction/OldTests/insert_1.txt @@ -0,0 +1,14 @@ +Check if the snippets are inserted properly. + +>>>>templates/test.tpl + + +Snippet + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Snippet \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/insert_2.txt b/tests/Package/Instruction/OldTests/insert_2.txt new file mode 100644 index 0000000..f6048c5 --- /dev/null +++ b/tests/Package/Instruction/OldTests/insert_2.txt @@ -0,0 +1,13 @@ +Check the default content. + +>>>>templates/test.tpl + + +NOSNIPPET + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NOSNIPPET \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/insert_3.txt b/tests/Package/Instruction/OldTests/insert_3.txt new file mode 100644 index 0000000..599be2e --- /dev/null +++ b/tests/Package/Instruction/OldTests/insert_3.txt @@ -0,0 +1,14 @@ +Check the default content. + +>>>>templates/test.tpl + + +Snippet +NOSNIPPET + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Snippet \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/insert_4.txt b/tests/Package/Instruction/OldTests/insert_4.txt new file mode 100644 index 0000000..56b83d3 --- /dev/null +++ b/tests/Package/Instruction/OldTests/insert_4.txt @@ -0,0 +1,15 @@ +Check the default content and opt:parent + +>>>>templates/test.tpl + + +Snippet +NOSNIPPET + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Snippet +NOSNIPPET \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/insert_5.txt b/tests/Package/Instruction/OldTests/insert_5.txt new file mode 100644 index 0000000..85073c9 --- /dev/null +++ b/tests/Package/Instruction/OldTests/insert_5.txt @@ -0,0 +1,15 @@ +Check the default content, opt:parent and ignoredefault attribute which should +hide the default content from the parent. + +>>>>templates/test.tpl + + +Snippet +NOSNIPPET + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Snippet \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/literal_1.txt b/tests/Package/Instruction/OldTests/literal_1.txt new file mode 100644 index 0000000..c46ecac --- /dev/null +++ b/tests/Package/Instruction/OldTests/literal_1.txt @@ -0,0 +1,15 @@ +Check the opt:literal instruction. + +>>>>templates/test.tpl + + +Foo{$joe}Hoo + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +>>>>data.php +$view->joe = 'Joe'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/literal_2.txt b/tests/Package/Instruction/OldTests/literal_2.txt new file mode 100644 index 0000000..7cf4f57 --- /dev/null +++ b/tests/Package/Instruction/OldTests/literal_2.txt @@ -0,0 +1,15 @@ +Check the opt:literal instruction to generate comments. + +>>>>templates/test.tpl + + +Foo{$joe}Hoo + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +>>>>data.php +$view->joe = 'Joe'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/literal_3.txt b/tests/Package/Instruction/OldTests/literal_3.txt new file mode 100644 index 0000000..836e677 --- /dev/null +++ b/tests/Package/Instruction/OldTests/literal_3.txt @@ -0,0 +1,15 @@ +Check the opt:literal instruction to simply hide CDATA. + +>>>>templates/test.tpl + + +Foo{$joe}Hoo + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FooBarJoeGooHoo +>>>>data.php +$view->joe = 'Joe'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/literal_4.txt b/tests/Package/Instruction/OldTests/literal_4.txt new file mode 100644 index 0000000..335e5b1 --- /dev/null +++ b/tests/Package/Instruction/OldTests/literal_4.txt @@ -0,0 +1,15 @@ +Check the opt:literal instruction to display CDATA. + +>>>>templates/test.tpl + + +Foo{$joe}Hoo + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +>>>>data.php +$view->joe = 'Joe'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/literal_5.txt b/tests/Package/Instruction/OldTests/literal_5.txt new file mode 100644 index 0000000..d6baede --- /dev/null +++ b/tests/Package/Instruction/OldTests/literal_5.txt @@ -0,0 +1,22 @@ +opt:literal and XML comments - it should not generate a nested code. + +>>>>templates/test.tpl + + + +A text with + + + + +>>>>data.php +$this->tpl->printComments = true; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/literal_6.txt b/tests/Package/Instruction/OldTests/literal_6.txt new file mode 100644 index 0000000..ff7fe13 --- /dev/null +++ b/tests/Package/Instruction/OldTests/literal_6.txt @@ -0,0 +1,23 @@ +Bug #85 test - opt:literal must disable entities in the cdata text. + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/on_1.txt b/tests/Package/Instruction/OldTests/on_1.txt new file mode 100644 index 0000000..921d470 --- /dev/null +++ b/tests/Package/Instruction/OldTests/on_1.txt @@ -0,0 +1,15 @@ +Check the basic opt:on features. + +>>>>templates/test.tpl + + +
With a tag
+
Without a tag
+
+ +>>>>expected.txt +OUTPUT + +>>>>result.txt +
With a tag
+Without a tag diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_1.txt b/tests/Package/Instruction/OldTests/prolog_1.txt similarity index 100% rename from tests/Package/Instruction/Tests/Prolog/prolog_1.txt rename to tests/Package/Instruction/OldTests/prolog_1.txt diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_2.txt b/tests/Package/Instruction/OldTests/prolog_2.txt similarity index 100% rename from tests/Package/Instruction/Tests/Prolog/prolog_2.txt rename to tests/Package/Instruction/OldTests/prolog_2.txt diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_3.txt b/tests/Package/Instruction/OldTests/prolog_3.txt similarity index 100% rename from tests/Package/Instruction/Tests/Prolog/prolog_3.txt rename to tests/Package/Instruction/OldTests/prolog_3.txt diff --git a/tests/Package/Instruction/OldTests/put_1.txt b/tests/Package/Instruction/OldTests/put_1.txt new file mode 100644 index 0000000..1638041 --- /dev/null +++ b/tests/Package/Instruction/OldTests/put_1.txt @@ -0,0 +1,14 @@ +The test checks the basic opt:put functionality. + +>>>>templates/test.tpl + + +{@foo is 5} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +5 \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/put_2.txt b/tests/Package/Instruction/OldTests/put_2.txt new file mode 100644 index 0000000..474c5ac --- /dev/null +++ b/tests/Package/Instruction/OldTests/put_2.txt @@ -0,0 +1,24 @@ +Conditional opt:put, or "add as much instructions as you can". + +>>>>templates/test.tpl +The test checks the basic opt:put functionality. + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +A / B / C / D + +>>>>data.php +$view->sect = array(0 => + array('item' => 'A'), + array('item' => 'B'), + array('item' => 'C'), + array('item' => 'D') +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/put_3.txt b/tests/Package/Instruction/OldTests/put_3.txt new file mode 100644 index 0000000..77d0aef --- /dev/null +++ b/tests/Package/Instruction/OldTests/put_3.txt @@ -0,0 +1,26 @@ +In OPT 2.0-RC1, there was found a problem in the compiler that caused the code buffer +linking twice, if the specified node was the last on the queue in the current nesting +level. This unit test reproduces this situation with opt:put. + +>>>>templates/test.tpl +The test checks the basic opt:put functionality. + +>>>>templates/test.tpl + + +

+
+ +>>>>expected.txt +OUTPUT + +>>>>result.txt +

A / B / C / D

+ +>>>>data.php +$view->sect = array(0 => + array('item' => 'A'), + array('item' => 'B'), + array('item' => 'C'), + array('item' => 'D') +); \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Repeat/repeat_1.txt b/tests/Package/Instruction/OldTests/repeat_1.txt similarity index 100% rename from tests/Package/Instruction/Tests/Repeat/repeat_1.txt rename to tests/Package/Instruction/OldTests/repeat_1.txt diff --git a/tests/Package/Instruction/Tests/Repeat/repeat_2.txt b/tests/Package/Instruction/OldTests/repeat_2.txt similarity index 100% rename from tests/Package/Instruction/Tests/Repeat/repeat_2.txt rename to tests/Package/Instruction/OldTests/repeat_2.txt diff --git a/tests/Package/Instruction/Tests/Repeat/repeat_3.txt b/tests/Package/Instruction/OldTests/repeat_3.txt similarity index 100% rename from tests/Package/Instruction/Tests/Repeat/repeat_3.txt rename to tests/Package/Instruction/OldTests/repeat_3.txt diff --git a/tests/Package/Instruction/Tests/Repeat/repeat_4.txt b/tests/Package/Instruction/OldTests/repeat_4.txt similarity index 100% rename from tests/Package/Instruction/Tests/Repeat/repeat_4.txt rename to tests/Package/Instruction/OldTests/repeat_4.txt diff --git a/tests/Package/Instruction/OldTests/root_1.txt b/tests/Package/Instruction/OldTests/root_1.txt new file mode 100644 index 0000000..0daf1ad --- /dev/null +++ b/tests/Package/Instruction/OldTests/root_1.txt @@ -0,0 +1,18 @@ +Testing the "opt:root" instruction. + +>>>>templates/test.tpl + + +

foo

+

foo

+
+ +>>>>data.php +$this->tpl->singleRootNode = true; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +

foo

+

foo

\ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/root_2.txt b/tests/Package/Instruction/OldTests/root_2.txt new file mode 100644 index 0000000..2c51b03 --- /dev/null +++ b/tests/Package/Instruction/OldTests/root_2.txt @@ -0,0 +1,13 @@ +"opt:root" should not be used in other context than parent's. + +>>>>templates/test.tpl + +
+foo +
+ +>>>>data.php +$this->tpl->singleRootNode = true; + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/root_3.txt b/tests/Package/Instruction/OldTests/root_3.txt new file mode 100644 index 0000000..bf680d7 --- /dev/null +++ b/tests/Package/Instruction/OldTests/root_3.txt @@ -0,0 +1,16 @@ +Testing the "opt:root" escaping control capabilities. + +>>>>templates/test.tpl + + +{$htmlVar} + + +>>>>data.php +$view->htmlVar = '

foo

'; + +>>>>expected.txt +OUTPUT + +>>>>result.txt +

foo

\ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/root_4.txt b/tests/Package/Instruction/OldTests/root_4.txt new file mode 100644 index 0000000..2ef5a66 --- /dev/null +++ b/tests/Package/Instruction/OldTests/root_4.txt @@ -0,0 +1,21 @@ +Testing the "opt:root" include attribute. + +>>>>templates/included.tpl + + + +

foo

+
+
+ +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +

foo

\ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/root_5.txt b/tests/Package/Instruction/OldTests/root_5.txt new file mode 100644 index 0000000..6cfea63 --- /dev/null +++ b/tests/Package/Instruction/OldTests/root_5.txt @@ -0,0 +1,24 @@ +Testing the "opt:root" dynamic attribute. + +>>>>templates/included.tpl + + + +

foo

+
+
+ +>>>>templates/test.tpl + + + + + +>>>>data.php +$view->inherit('included.tpl'); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +

foo

\ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_1.txt b/tests/Package/Instruction/OldTests/section_1.txt new file mode 100644 index 0000000..2286897 --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_1.txt @@ -0,0 +1,26 @@ +The test checks the basic section features. + +>>>>templates/test.tpl + + + +{$sect.val1},{$sect.val2} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +A,B +C,D +E,F +G,H + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_10.txt b/tests/Package/Instruction/OldTests/section_10.txt new file mode 100644 index 0000000..1f9e9c6 --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_10.txt @@ -0,0 +1,34 @@ +The test checks the "datasource" attribute for the nested sections. +It should disable the relationships. + +>>>>templates/test.tpl + + + +{$sect.val1},{$sect.val2} + +*{$sect2.foo} + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +A,B +*X +*Y +C,D +*X +*Y + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), +); +$view->nest = array( + array('foo' => 'X'), + array('foo' => 'Y'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_11.txt b/tests/Package/Instruction/OldTests/section_11.txt new file mode 100644 index 0000000..44b841e --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_11.txt @@ -0,0 +1,28 @@ +The test checks the cooperation with "opt:if" attribute. + +>>>>templates/test.tpl + + +START + +{$sect.val1},{$sect.val2} +NO DATA + +STOP + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +START +STOP + +>>>>data.php +$view->falseVar = false; +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_12.txt b/tests/Package/Instruction/OldTests/section_12.txt new file mode 100644 index 0000000..4294adc --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_12.txt @@ -0,0 +1,29 @@ +The test checks the cooperation with "display" attribute. + +>>>>templates/test.tpl + + +START + +{$sect.val1},{$sect.val2} +NO DATA + +STOP + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +START +NO DATA +STOP + +>>>>data.php +$view->falseVar = false; +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_2.txt b/tests/Package/Instruction/OldTests/section_2.txt new file mode 100644 index 0000000..0c5e025 --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_2.txt @@ -0,0 +1,16 @@ +The test checks the sectionelse tag. + +>>>>templates/test.tpl + + + +{$sect.val1},{$sect.val2} +NO DATA + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NO DATA diff --git a/tests/Package/Instruction/OldTests/section_3.txt b/tests/Package/Instruction/OldTests/section_3.txt new file mode 100644 index 0000000..fa1624c --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_3.txt @@ -0,0 +1,39 @@ +The test checks the relationships between sections. + +>>>>templates/test.tpl + + + +{$sect.val1},{$sect.val2} + +*{$sect2.foo} + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +A,B +*bar +*joe +C,D +*goo +*hoo + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), +); +$view->sect2 = array(0 => + array(0 => + array('foo' => 'bar'), + array('foo' => 'joe'), + ), + array(0 => + array('foo' => 'goo'), + array('foo' => 'hoo'), + ), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_4.txt b/tests/Package/Instruction/OldTests/section_4.txt new file mode 100644 index 0000000..375f632 --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_4.txt @@ -0,0 +1,30 @@ +This test checks the manual manipulation of section data. + +>>>>templates/test.tpl + + + + +{$sect1.value} {$sect2.value} + + + + +>>>>data.php +$view->sect1 = array(0 => + array('value' => ':sect1-value1:'), + array('value' => ':sect1-value2:') +); +$view->sect2 = array(0 => + array('value' => ':sect2-value1:'), + array('value' => ':sect2-value2:') +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:sect1-value1: :sect2-value1: +:sect1-value1: :sect2-value2: +:sect1-value2: :sect2-value1: +:sect1-value2: :sect2-value2: \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_5.txt b/tests/Package/Instruction/OldTests/section_5.txt new file mode 100644 index 0000000..c58f96f --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_5.txt @@ -0,0 +1,46 @@ +More advanced relationships. sect3 should be connected with sect2. + +>>>>templates/test.tpl + + + + + +{$sect1.value} {$sect2.value} {$sect3.value} + + + + + +>>>>data.php +$view->sect1 = array(0 => + array('value' => ':sect1-value1:'), + array('value' => ':sect1-value2:') +); +$view->sect2 = array(0 => + array('value' => ':sect2-value1:'), + array('value' => ':sect2-value2:') +); +$view->sect3 = array(0 => + array(0 => + array('value' => ':sect3a-value1:'), + array('value' => ':sect3a-value2:') + ), + array(0 => + array('value' => ':sect3b-value1:'), + array('value' => ':sect3b-value2:') + ) +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:sect1-value1: :sect2-value1: :sect3a-value1: +:sect1-value1: :sect2-value1: :sect3a-value2: +:sect1-value1: :sect2-value2: :sect3b-value1: +:sect1-value1: :sect2-value2: :sect3b-value2: +:sect1-value2: :sect2-value1: :sect3a-value1: +:sect1-value2: :sect2-value1: :sect3a-value2: +:sect1-value2: :sect2-value2: :sect3b-value1: +:sect1-value2: :sect2-value2: :sect3b-value2: \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_6.txt b/tests/Package/Instruction/OldTests/section_6.txt new file mode 100644 index 0000000..2de9a07 --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_6.txt @@ -0,0 +1,46 @@ +More advanced relationships. sect3 should be connected with sect1. + +>>>>templates/test.tpl + + + + + +{$sect1.value} {$sect2.value} {$sect3.value} + + + + + +>>>>data.php +$view->sect1 = array(0 => + array('value' => ':sect1-value1:'), + array('value' => ':sect1-value2:') +); +$view->sect2 = array(0 => + array('value' => ':sect2-value1:'), + array('value' => ':sect2-value2:') +); +$view->sect3 = array(0 => + array(0 => + array('value' => ':sect3a-value1:'), + array('value' => ':sect3a-value2:') + ), + array(0 => + array('value' => ':sect3b-value1:'), + array('value' => ':sect3b-value2:') + ) +); + +>>>>expected.txt +OUTPUT + +>>>>result.txt +:sect1-value1: :sect2-value1: :sect3a-value1: +:sect1-value1: :sect2-value1: :sect3a-value2: +:sect1-value1: :sect2-value2: :sect3a-value1: +:sect1-value1: :sect2-value2: :sect3a-value2: +:sect1-value2: :sect2-value1: :sect3b-value1: +:sect1-value2: :sect2-value1: :sect3b-value2: +:sect1-value2: :sect2-value2: :sect3b-value1: +:sect1-value2: :sect2-value2: :sect3b-value2: \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_7.txt b/tests/Package/Instruction/OldTests/section_7.txt new file mode 100644 index 0000000..74f5fec --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_7.txt @@ -0,0 +1,17 @@ +The test checks the detection of multiple sectionelse tags. + +>>>>templates/test.tpl + + + +{$sect.val1},{$sect.val2} +NO DATA +NO DATA + + + +>>>>expected.txt +Opt_Instruction_Section_Exception + +>>>>result.txt +NO DATA diff --git a/tests/Package/Instruction/OldTests/section_8.txt b/tests/Package/Instruction/OldTests/section_8.txt new file mode 100644 index 0000000..bf1fc0d --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_8.txt @@ -0,0 +1,43 @@ +Testing section special variable + +>>>>templates/test.tpl + + + +TESTING: {$sect.val1} +{$system.section.sect.count},{$system.section.sect.size} +{$system.section.sect.iterator} +FIRST +LAST +EXTREME + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +TESTING: A +4,1 +0 +FIRST +EXTREME +TESTING: B +4,1 +1 +TESTING: C +4,1 +2 +TESTING: D +4,1 +3 +LAST +EXTREME + +>>>>data.php +$view->sect = array( + array('val1' => 'A'), + array('val1' => 'B'), + array('val1' => 'C'), + array('val1' => 'D'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/section_9.txt b/tests/Package/Instruction/OldTests/section_9.txt new file mode 100644 index 0000000..618d1ea --- /dev/null +++ b/tests/Package/Instruction/OldTests/section_9.txt @@ -0,0 +1,26 @@ +Test the "datasource" attribute. + +>>>>templates/test.tpl + + + +{$sect.val1},{$sect.val2} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +A,B +C,D +E,F +G,H + +>>>>data.php +$view->variable = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/selector_1.txt b/tests/Package/Instruction/OldTests/selector_1.txt new file mode 100644 index 0000000..e91dbbb --- /dev/null +++ b/tests/Package/Instruction/OldTests/selector_1.txt @@ -0,0 +1,27 @@ +The test checks the opt:selector instruction. + +>>>>templates/test.tpl + + + +FOO: {$sect.val1},{$sect.val2} +BAR: {$sect.val1},{$sect.val2} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO: A,B +BAR: C,D +FOO: E,F +BAR: G,H + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B', 'item' => 'foo'), + array('val1' => 'C', 'val2' => 'D', 'item' => 'bar'), + array('val1' => 'E', 'val2' => 'F', 'item' => 'foo'), + array('val1' => 'G', 'val2' => 'H', 'item' => 'bar'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/selector_2.txt b/tests/Package/Instruction/OldTests/selector_2.txt new file mode 100644 index 0000000..dc16c2c --- /dev/null +++ b/tests/Package/Instruction/OldTests/selector_2.txt @@ -0,0 +1,27 @@ +The test checks the opt:selector instruction and custom item name field + +>>>>templates/test.tpl + + + +FOO: {$sect.val1},{$sect.val2} +BAR: {$sect.val1},{$sect.val2} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO: A,B +BAR: C,D +FOO: E,F +BAR: G,H + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B', 'ajtem' => 'foo'), + array('val1' => 'C', 'val2' => 'D', 'ajtem' => 'bar'), + array('val1' => 'E', 'val2' => 'F', 'ajtem' => 'foo'), + array('val1' => 'G', 'val2' => 'H', 'ajtem' => 'bar'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/selector_3.txt b/tests/Package/Instruction/OldTests/selector_3.txt new file mode 100644 index 0000000..bafbd36 --- /dev/null +++ b/tests/Package/Instruction/OldTests/selector_3.txt @@ -0,0 +1,33 @@ +The same, as test selector_1, but together with OPT:SHOW + +>>>>templates/test.tpl + + + +START + +FOO: {$sect.val1},{$sect.val2} +BAR: {$sect.val1},{$sect.val2} + +END + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +START +FOO: A,B +BAR: C,D +FOO: E,F +BAR: G,H +END + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B', 'item' => 'foo'), + array('val1' => 'C', 'val2' => 'D', 'item' => 'bar'), + array('val1' => 'E', 'val2' => 'F', 'item' => 'foo'), + array('val1' => 'G', 'val2' => 'H', 'item' => 'bar'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/selector_4.txt b/tests/Package/Instruction/OldTests/selector_4.txt new file mode 100644 index 0000000..d3749bd --- /dev/null +++ b/tests/Package/Instruction/OldTests/selector_4.txt @@ -0,0 +1,33 @@ +The same, as test selector_2, but together with OPT:SHOW + +>>>>templates/test.tpl + + + +START + +FOO: {$sect.val1},{$sect.val2} +BAR: {$sect.val1},{$sect.val2} + +END + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +START +FOO: A,B +BAR: C,D +FOO: E,F +BAR: G,H +END + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B', 'ajtem' => 'foo'), + array('val1' => 'C', 'val2' => 'D', 'ajtem' => 'bar'), + array('val1' => 'E', 'val2' => 'F', 'ajtem' => 'foo'), + array('val1' => 'G', 'val2' => 'H', 'ajtem' => 'bar'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/selector_5.txt b/tests/Package/Instruction/OldTests/selector_5.txt new file mode 100644 index 0000000..288daa5 --- /dev/null +++ b/tests/Package/Instruction/OldTests/selector_5.txt @@ -0,0 +1,28 @@ +Test, whether the instruction works with separators given as tags. + +>>>>templates/test.tpl + + + +, +FOO: {$sect.val1},{$sect.val2} +BAR: {$sect.val1},{$sect.val2} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +FOO: A,B, +BAR: C,D, +FOO: E,F, +BAR: G,H + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B', 'item' => 'foo'), + array('val1' => 'C', 'val2' => 'D', 'item' => 'bar'), + array('val1' => 'E', 'val2' => 'F', 'item' => 'foo'), + array('val1' => 'G', 'val2' => 'H', 'item' => 'bar'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/selector_6.txt b/tests/Package/Instruction/OldTests/selector_6.txt new file mode 100644 index 0000000..ff40e23 --- /dev/null +++ b/tests/Package/Instruction/OldTests/selector_6.txt @@ -0,0 +1,19 @@ +The test checks the opt:selector instruction. + +>>>>templates/test.tpl + + + +FOO: {$sect.val1},{$sect.val2} +BAR: {$sect.val1},{$sect.val2} +NO DATA + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NO DATA + +>>>>data.php diff --git a/tests/Package/Instruction/OldTests/selector_7.txt b/tests/Package/Instruction/OldTests/selector_7.txt new file mode 100644 index 0000000..d20601d --- /dev/null +++ b/tests/Package/Instruction/OldTests/selector_7.txt @@ -0,0 +1,15 @@ +The test checks the reporting of multiple opt:selectorelse. + +>>>>templates/test.tpl + + + +FOO: {$sect.val1},{$sect.val2} +BAR: {$sect.val1},{$sect.val2} +NO DATA +NO DATA + + + +>>>>expected.txt +Opt_Instruction_Section_Exception diff --git a/tests/Package/Instruction/OldTests/selector_8.txt b/tests/Package/Instruction/OldTests/selector_8.txt new file mode 100644 index 0000000..2f9a442 --- /dev/null +++ b/tests/Package/Instruction/OldTests/selector_8.txt @@ -0,0 +1,27 @@ +The test checks the opt:selector attribute. + +>>>>templates/test.tpl + + +
+FOO: {$sect.val1},{$sect.val2} +BAR: {$sect.val1},{$sect.val2} +
+
+ +>>>>expected.txt +OUTPUT + +>>>>result.txt +
FOO: A,B
+
BAR: C,D
+
FOO: E,F
+
BAR: G,H
+ +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B', 'item' => 'foo'), + array('val1' => 'C', 'val2' => 'D', 'item' => 'bar'), + array('val1' => 'E', 'val2' => 'F', 'item' => 'foo'), + array('val1' => 'G', 'val2' => 'H', 'item' => 'bar'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_1.txt b/tests/Package/Instruction/OldTests/show_1.txt new file mode 100644 index 0000000..c9108ba --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_1.txt @@ -0,0 +1,32 @@ +The test checks the basic opt:show features. + +>>>>templates/test.tpl + + + +Foo: + +{$sect.val1},{$sect.val2} + +Eof + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Foo: +A,B +C,D +E,F +G,H +Eof + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_10.txt b/tests/Package/Instruction/OldTests/show_10.txt new file mode 100644 index 0000000..8a32b1d --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_10.txt @@ -0,0 +1,35 @@ +Check, whether opt:show works with snippets. + +>>>>templates/test.tpl + + + +Foo: + +{$foo.val1},{$foo.val2} + +Eof + + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Foo: +A,B +C,D +E,F +G,H +Eof + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_2.txt b/tests/Package/Instruction/OldTests/show_2.txt new file mode 100644 index 0000000..2fda822 --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_2.txt @@ -0,0 +1,21 @@ +The test checks the basic opt:show features. + +>>>>templates/test.tpl + + + +Foo: + +{$sect.val1},{$sect.val2} + +Eof + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +>>>>data.php +$view->sect = array(); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_3.txt b/tests/Package/Instruction/OldTests/show_3.txt new file mode 100644 index 0000000..710f72d --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_3.txt @@ -0,0 +1,25 @@ +The test checks the basic opt:show features. + +>>>>templates/test.tpl + + + +Foo: + +{$sect.val1},{$sect.val2} + +Eof + +NO DATA + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NO DATA + +>>>>data.php +$view->sect = array(); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_4.txt b/tests/Package/Instruction/OldTests/show_4.txt new file mode 100644 index 0000000..fb11c3c --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_4.txt @@ -0,0 +1,45 @@ +Check the linking between two sections with opt:show. In this test +there should not be a relationship, because the section "sub" is not +nested within opt:section, but opt:show. + +>>>>templates/test.tpl + + + + +{$sub.item} + +Foo: + +{$sect.val1},{$sect.val2} + +Eof + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +A +B +C +Foo: +A,B +C,D +E,F +G,H +Eof + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); +$view->sub = array( + array('item' => 'A'), + array('item' => 'B'), + array('item' => 'C'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_5.txt b/tests/Package/Instruction/OldTests/show_5.txt new file mode 100644 index 0000000..795c553 --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_5.txt @@ -0,0 +1,34 @@ +Check the linking between two sections with opt:show. In this test +there should not be a relationship, because the section "sub" is not +nested within opt:section, but opt:show. + +>>>>templates/test.tpl + + + + +{$sub.item} + +Foo: + +{$sect.val1},{$sect.val2} + +Eof + + + +>>>>expected.txt +Opt_Instruction_Section_Exception + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); +$view->sub = array( + array('item' => 'A'), + array('item' => 'B'), + array('item' => 'C'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_6.txt b/tests/Package/Instruction/OldTests/show_6.txt new file mode 100644 index 0000000..9f7cc90 --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_6.txt @@ -0,0 +1,26 @@ +The test checks, what happens, if there is no section instruction in opt:show. +Situation A: no section, but there are data - we should display the neighbourhood. + +>>>>templates/test.tpl + + + +Foo: +Eof + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Foo: +Eof + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_7.txt b/tests/Package/Instruction/OldTests/show_7.txt new file mode 100644 index 0000000..6662749 --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_7.txt @@ -0,0 +1,19 @@ +The test checks, what happens, if there is no section instruction in opt:show. +Situation B: no section, no data, no effect. + +>>>>templates/test.tpl + + + +Foo: +Eof + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +>>>>data.php +$view->sect = array(); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_8.txt b/tests/Package/Instruction/OldTests/show_8.txt new file mode 100644 index 0000000..af41149 --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_8.txt @@ -0,0 +1,21 @@ +The test checks, what happens, if there is no section instruction in opt:show. +Situation C: no section, no data, but the error message set. + +>>>>templates/test.tpl + + + +Foo: +Eof +NO DATA + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NO DATA + +>>>>data.php +$view->sect = array(); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/show_9.txt b/tests/Package/Instruction/OldTests/show_9.txt new file mode 100644 index 0000000..1a1e50a --- /dev/null +++ b/tests/Package/Instruction/OldTests/show_9.txt @@ -0,0 +1,38 @@ +Is the doubly nested opt:show for the same section handled correctly? + +>>>>templates/test.tpl + + + +Foo: + +Bar: + +{$sect.val1} + +Eos + +Eof + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Foo: +Bar: +A +C +E +G +Eos +Eof + +>>>>data.php +$view->sect = array( + array('val1' => 'A', 'val2' => 'B'), + array('val1' => 'C', 'val2' => 'D'), + array('val1' => 'E', 'val2' => 'F'), + array('val1' => 'G', 'val2' => 'H'), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/single_1.txt b/tests/Package/Instruction/OldTests/single_1.txt new file mode 100644 index 0000000..cfa02bb --- /dev/null +++ b/tests/Package/Instruction/OldTests/single_1.txt @@ -0,0 +1,19 @@ +The test checks the opt:single attribute functionality. + +>>>>templates/test.tpl + + + + +This will not be visible. + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + + + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/single_2.txt b/tests/Package/Instruction/OldTests/single_2.txt new file mode 100644 index 0000000..992942c --- /dev/null +++ b/tests/Package/Instruction/OldTests/single_2.txt @@ -0,0 +1,21 @@ +The test checks the opt:single attribute functionality. + +>>>>templates/test.tpl + + + + +This will be visible. + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + + +This will be visible. + + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/single_3.txt b/tests/Package/Instruction/OldTests/single_3.txt new file mode 100644 index 0000000..1b8124a --- /dev/null +++ b/tests/Package/Instruction/OldTests/single_3.txt @@ -0,0 +1,14 @@ +The test checks if opt:single cannot be applied to the OPT tags. + +>>>>templates/test.tpl + + + + +This will not be visible. + + + + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/OldTests/snippet_1.txt b/tests/Package/Instruction/OldTests/snippet_1.txt new file mode 100644 index 0000000..a37ce6a --- /dev/null +++ b/tests/Package/Instruction/OldTests/snippet_1.txt @@ -0,0 +1,16 @@ +Check the snippet instruction. + +>>>>templates/test.tpl + + +Value:{$val} +Foo: + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Foo:Value:Bar +>>>>data.php +$view->val='Bar'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/snippet_2.txt b/tests/Package/Instruction/OldTests/snippet_2.txt new file mode 100644 index 0000000..0e448c0 --- /dev/null +++ b/tests/Package/Instruction/OldTests/snippet_2.txt @@ -0,0 +1,19 @@ +Check the snippet instruction. + +>>>>templates/test.tpl + + +Value:{$val} +Foo: +{$val is 'Joe'} +Foo: + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Foo:Value:Bar +Foo:Value:Joe +>>>>data.php +$view->val='Bar'; \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/snippet_3.txt b/tests/Package/Instruction/OldTests/snippet_3.txt new file mode 100644 index 0000000..c84e3eb --- /dev/null +++ b/tests/Package/Instruction/OldTests/snippet_3.txt @@ -0,0 +1,16 @@ +Check whether the snippets are overloaded properly according to the template inheritance rules. + +>>>>templates/test.tpl + + +Foo +Bar +Joe + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Foo \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/snippet_4.txt b/tests/Package/Instruction/OldTests/snippet_4.txt new file mode 100644 index 0000000..1177564 --- /dev/null +++ b/tests/Package/Instruction/OldTests/snippet_4.txt @@ -0,0 +1,17 @@ +Check whether the snippets are overloaded properly according to the template inheritance rules. +Additionally, the opt:parent tag is checked. + +>>>>templates/test.tpl + + +Open1End1 +Open2End2 +Open3End3 + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +Open1Open2Open3End3End2End1 \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/snippet_5.txt b/tests/Package/Instruction/OldTests/snippet_5.txt new file mode 100644 index 0000000..9a1570b --- /dev/null +++ b/tests/Package/Instruction/OldTests/snippet_5.txt @@ -0,0 +1,11 @@ +Detect infinite recursion. + +>>>>templates/test.tpl + + +Snippet: + + + +>>>>expected.txt +Opt_Instruction_Exception \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/snippet_6.txt b/tests/Package/Instruction/OldTests/snippet_6.txt new file mode 100644 index 0000000..6a734b5 --- /dev/null +++ b/tests/Package/Instruction/OldTests/snippet_6.txt @@ -0,0 +1,26 @@ +Checks, how opt:parent works. + +>>>>templates/test.tpl + + + + + + + +>>>>templates/base.tpl + + + + + + + +>>>>data.php +$this->tpl->prologRequired = false; + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/snippet_7.txt b/tests/Package/Instruction/OldTests/snippet_7.txt new file mode 100644 index 0000000..3dcabaa --- /dev/null +++ b/tests/Package/Instruction/OldTests/snippet_7.txt @@ -0,0 +1,26 @@ +Bug #144. + +>>>>templates/test.tpl + + + + +Some content. + + + +>>>>templates/extended1.tpl + + + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +Some content. + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/snippet_8.txt b/tests/Package/Instruction/OldTests/snippet_8.txt new file mode 100644 index 0000000..223479e --- /dev/null +++ b/tests/Package/Instruction/OldTests/snippet_8.txt @@ -0,0 +1,29 @@ +An extension to the bug #144. + +>>>>templates/test.tpl + + + + +Some content. + + + + + + + +>>>>templates/extended1.tpl + + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +Some content. + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tag_1.txt b/tests/Package/Instruction/OldTests/tag_1.txt new file mode 100644 index 0000000..bbbd003 --- /dev/null +++ b/tests/Package/Instruction/OldTests/tag_1.txt @@ -0,0 +1,17 @@ +The test checks the basic opt:tag functionality. + +>>>>templates/test.tpl + + + +bar + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tag_2.txt b/tests/Package/Instruction/OldTests/tag_2.txt new file mode 100644 index 0000000..38074fe --- /dev/null +++ b/tests/Package/Instruction/OldTests/tag_2.txt @@ -0,0 +1,18 @@ +The test checks the basic opt:tag functionality with the "name" attribute added. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tag_3.txt b/tests/Package/Instruction/OldTests/tag_3.txt new file mode 100644 index 0000000..e7655ab --- /dev/null +++ b/tests/Package/Instruction/OldTests/tag_3.txt @@ -0,0 +1,18 @@ +The test checks the basic opt:tag functionality with the "single" attribute added. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +bar + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tag_4.txt b/tests/Package/Instruction/OldTests/tag_4.txt new file mode 100644 index 0000000..b54d099 --- /dev/null +++ b/tests/Package/Instruction/OldTests/tag_4.txt @@ -0,0 +1,15 @@ +The test checks the single tag creation. + +>>>>templates/test.tpl + + + +bar + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tag_5.txt b/tests/Package/Instruction/OldTests/tag_5.txt new file mode 100644 index 0000000..d8377fd --- /dev/null +++ b/tests/Package/Instruction/OldTests/tag_5.txt @@ -0,0 +1,16 @@ +The test checks the single tag creation with extra attributes. + +>>>>templates/test.tpl + + + + +bar + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tree_1.txt b/tests/Package/Instruction/OldTests/tree_1.txt new file mode 100644 index 0000000..df6720c --- /dev/null +++ b/tests/Package/Instruction/OldTests/tree_1.txt @@ -0,0 +1,42 @@ +The test checks the basic opt:tree features. + +>>>>templates/test.tpl + + + + +LIST START: + +LIST END: + + +NODE {$tree.title} START: + +NODE {$tree.title} END + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +LIST START: +NODE 1 START: +LIST START: +NODE 1.1 START: +LIST START: +NODE 1.1.1 START: +NODE 1.1.1 END +LIST END: +NODE 1.1 END +LIST END: +NODE 1 END +LIST END: + +>>>>data.php +$view->tree = array(0 => + array('title' => '1', 'depth' => 0), + array('title' => '1.1', 'depth' => 1), + array('title' => '1.1.1', 'depth' => 2), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tree_2.txt b/tests/Package/Instruction/OldTests/tree_2.txt new file mode 100644 index 0000000..09209b5 --- /dev/null +++ b/tests/Package/Instruction/OldTests/tree_2.txt @@ -0,0 +1,83 @@ +The test checks the basic opt:tree features. + +>>>>templates/test.tpl + + + + +LIST START: + +LIST END: + + +NODE {$tree.title} START: + +NODE {$tree.title} END + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +LIST START: +NODE Main category 1 START: +NODE Main category 1 END +NODE Main category 2 START: +LIST START: +NODE Subcategory 2.1 START: +NODE Subcategory 2.1 END +LIST END: +NODE Main category 2 END +NODE Main category 3 START: +LIST START: +NODE Subcategory 3.1 START: +LIST START: +NODE Item 3.1.1 START: +NODE Item 3.1.1 END +NODE Item 3.1.2 START: +NODE Item 3.1.2 END +NODE Item 3.1.3 START: +NODE Item 3.1.3 END +LIST END: +NODE Subcategory 3.1 END +NODE Subcategory 3.2 START: +NODE Subcategory 3.2 END +NODE Subcategory 3.3 START: +LIST START: +NODE Item 3.3.1 START: +NODE Item 3.3.1 END +LIST END: +NODE Subcategory 3.3 END +LIST END: +NODE Main category 3 END +NODE Main category 4 START: +LIST START: +NODE Subcategory 4.1 START: +LIST START: +NODE Item 4.1.1 START: +NODE Item 4.1.1 END +LIST END: +NODE Subcategory 4.1 END +LIST END: +NODE Main category 4 END +LIST END: + +>>>>data.php +$view->tree = array(0 => + array('title' => 'Main category 1', 'depth' => 0), + array('title' => 'Main category 2', 'depth' => 0), + array('title' => 'Subcategory 2.1', 'depth' => 1), + array('title' => 'Main category 3', 'depth' => 0), + array('title' => 'Subcategory 3.1', 'depth' => 1), + array('title' => 'Item 3.1.1', 'depth' => 2), + array('title' => 'Item 3.1.2', 'depth' => 2), + array('title' => 'Item 3.1.3', 'depth' => 2), + array('title' => 'Subcategory 3.2', 'depth' => 1), + array('title' => 'Subcategory 3.3', 'depth' => 1), + array('title' => 'Item 3.3.1', 'depth' => 2), + array('title' => 'Main category 4', 'depth' => 0), + array('title' => 'Subcategory 4.1', 'depth' => 1), + array('title' => 'Item 4.1.1', 'depth' => 2) +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tree_3.txt b/tests/Package/Instruction/OldTests/tree_3.txt new file mode 100644 index 0000000..3e3b9d6 --- /dev/null +++ b/tests/Package/Instruction/OldTests/tree_3.txt @@ -0,0 +1,25 @@ +The test checks the opt:treeelse instruction. + +>>>>templates/test.tpl + + + + +LIST START: + +LIST END: + + +NODE {$tree.title} START: + +NODE {$tree.title} END + +NO DATA + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +NO DATA \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tree_4.txt b/tests/Package/Instruction/OldTests/tree_4.txt new file mode 100644 index 0000000..7a3741f --- /dev/null +++ b/tests/Package/Instruction/OldTests/tree_4.txt @@ -0,0 +1,22 @@ +Check if placing opt:content from opt:list in a loop causes an exception. + +>>>>templates/test.tpl + + + + + + + + + +NODE {$tree.title} START: + +NODE {$tree.title} END + +NO DATA + + + +>>>>expected.txt +Opt_Instruction_Exception \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tree_5.txt b/tests/Package/Instruction/OldTests/tree_5.txt new file mode 100644 index 0000000..0de8aec --- /dev/null +++ b/tests/Package/Instruction/OldTests/tree_5.txt @@ -0,0 +1,22 @@ +Check if placing opt:content from opt:node in a loop causes an exception. + +>>>>templates/test.tpl + + + + +LIST START: + +LIST END + + + + + + +NO DATA + + + +>>>>expected.txt +Opt_Instruction_Exception \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tree_6.txt b/tests/Package/Instruction/OldTests/tree_6.txt new file mode 100644 index 0000000..839f00b --- /dev/null +++ b/tests/Package/Instruction/OldTests/tree_6.txt @@ -0,0 +1,42 @@ +The test checks if the tree works correctly with the other initial depth. + +>>>>templates/test.tpl + + + + +LIST START: + +LIST END: + + +NODE {$tree.title} START: + +NODE {$tree.title} END + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +LIST START: +NODE 1 START: +LIST START: +NODE 1.1 START: +LIST START: +NODE 1.1.1 START: +NODE 1.1.1 END +LIST END: +NODE 1.1 END +LIST END: +NODE 1 END +LIST END: + +>>>>data.php +$view->tree = array(0 => + array('title' => '1', 'depth' => 6), + array('title' => '1.1', 'depth' => 7), + array('title' => '1.1.1', 'depth' => 8), +); \ No newline at end of file diff --git a/tests/Package/Instruction/OldTests/tree_7.txt b/tests/Package/Instruction/OldTests/tree_7.txt new file mode 100644 index 0000000..040aa61 --- /dev/null +++ b/tests/Package/Instruction/OldTests/tree_7.txt @@ -0,0 +1,28 @@ +The test checks if the tree throws an exception, if there is a strange depth. + +>>>>templates/test.tpl + + + + +LIST START: + +LIST END: + + +NODE {$tree.title} START: + +NODE {$tree.title} END + + + + +>>>>expected.txt +Opt_Runtime_Exception + +>>>>data.php +$view->tree = array(0 => + array('title' => '1', 'depth' => 6), + array('title' => '1.1', 'depth' => 3), + array('title' => '1.1.1', 'depth' => 8), +); \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Content/content_all.txt b/tests/Package/Instruction/Tests/Content/content_all.txt new file mode 100644 index 0000000..7134ae8 --- /dev/null +++ b/tests/Package/Instruction/Tests/Content/content_all.txt @@ -0,0 +1,18 @@ +Testing all the extra attributes connected together. + +>>>>templates/test.tpl + + +

Default content

+

Default content

+
+ +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->bar = 'Modified content'; + +>>>>result.txt +

Default content

+

a xyzModified contentxyz a

\ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Content/content_append.txt b/tests/Package/Instruction/Tests/Content/content_append.txt new file mode 100644 index 0000000..d6da03a --- /dev/null +++ b/tests/Package/Instruction/Tests/Content/content_append.txt @@ -0,0 +1,18 @@ +Testing opt:content-append. + +>>>>templates/test.tpl + + +

Default content

+

Default content

+
+ +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->bar = 'Modified content'; + +>>>>result.txt +

Default content

+

Modified content a

\ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Content/content_basic.txt b/tests/Package/Instruction/Tests/Content/content_basic.txt new file mode 100644 index 0000000..f7d0021 --- /dev/null +++ b/tests/Package/Instruction/Tests/Content/content_basic.txt @@ -0,0 +1,18 @@ +The test checks the basic opt:content functionality. + +>>>>templates/test.tpl + + +

Default content

+

Default content

+
+ +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->bar = 'Modified content'; + +>>>>result.txt +

Default content

+

Modified content

\ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Content/content_complex.txt b/tests/Package/Instruction/Tests/Content/content_complex.txt new file mode 100644 index 0000000..3090496 --- /dev/null +++ b/tests/Package/Instruction/Tests/Content/content_complex.txt @@ -0,0 +1,19 @@ +Checking opt:content with more complex expressions. + +>>>>templates/test.tpl + + +

Default content

+

Default content

+
+ +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->a = 5; +$view->b = 3; + +>>>>result.txt +

Default content

+

8

\ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Content/content_display.txt b/tests/Package/Instruction/Tests/Content/content_display.txt new file mode 100644 index 0000000..bcc4647 --- /dev/null +++ b/tests/Package/Instruction/Tests/Content/content_display.txt @@ -0,0 +1,18 @@ +Testing opt:content-display. + +>>>>templates/test.tpl + + +

Default content

+

Default content

+
+ +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->bar = 'Modified content'; + +>>>>result.txt +

Default content

+

xyzModified contentxyz

\ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Content/content_prepend.txt b/tests/Package/Instruction/Tests/Content/content_prepend.txt new file mode 100644 index 0000000..a96a6b9 --- /dev/null +++ b/tests/Package/Instruction/Tests/Content/content_prepend.txt @@ -0,0 +1,18 @@ +Testing opt:content-prepend. + +>>>>templates/test.tpl + + +

Default content

+

Default content

+
+ +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->bar = 'Modified content'; + +>>>>result.txt +

Default content

+

a Modified content

\ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_custom.txt b/tests/Package/Instruction/Tests/Dtd/dtd_custom.txt new file mode 100644 index 0000000..3e09342 --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_custom.txt @@ -0,0 +1,13 @@ +Checks the basic DTD functionality. + +>>>>templates/test.tpl + + +]]> + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_html40.txt b/tests/Package/Instruction/Tests/Dtd/dtd_html40.txt new file mode 100644 index 0000000..4545784 --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_html40.txt @@ -0,0 +1,13 @@ +Checks the default DTD templates + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_html5.txt b/tests/Package/Instruction/Tests/Dtd/dtd_html5.txt new file mode 100644 index 0000000..54eeb67 --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_html5.txt @@ -0,0 +1,13 @@ +Checks the default DTD templates + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_multiple.txt b/tests/Package/Instruction/Tests/Dtd/dtd_multiple.txt new file mode 100644 index 0000000..9491589 --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_multiple.txt @@ -0,0 +1,14 @@ +There should not be two doctypes in the document. + +>>>>templates/test.tpl + + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_unknown.txt b/tests/Package/Instruction/Tests/Dtd/dtd_unknown.txt new file mode 100644 index 0000000..3cdb96c --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_unknown.txt @@ -0,0 +1,10 @@ +Strange template - opt:dtd should report an exception. + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +Opt_Instruction_Exception diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10frameset.txt b/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10frameset.txt new file mode 100644 index 0000000..d2fc468 --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10frameset.txt @@ -0,0 +1,13 @@ +Checks the default DTD templates + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10strict.txt b/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10strict.txt new file mode 100644 index 0000000..ad0123a --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10strict.txt @@ -0,0 +1,13 @@ +Checks the default DTD templates + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10transitional.txt b/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10transitional.txt new file mode 100644 index 0000000..171a5eb --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_xhtml10transitional.txt @@ -0,0 +1,13 @@ +Checks the default DTD templates + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Dtd/dtd_xhtml11.txt b/tests/Package/Instruction/Tests/Dtd/dtd_xhtml11.txt new file mode 100644 index 0000000..9ca4579 --- /dev/null +++ b/tests/Package/Instruction/Tests/Dtd/dtd_xhtml11.txt @@ -0,0 +1,13 @@ +Checks the default DTD templates + +>>>>templates/test.tpl + + + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_custom_args.txt b/tests/Package/Instruction/Tests/Prolog/prolog_custom_args.txt new file mode 100644 index 0000000..dbb2521 --- /dev/null +++ b/tests/Package/Instruction/Tests/Prolog/prolog_custom_args.txt @@ -0,0 +1,16 @@ +Test checks the prolog generation + +>>>>templates/test.tpl + + + + +foo + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +foo \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_default.txt b/tests/Package/Instruction/Tests/Prolog/prolog_default.txt new file mode 100644 index 0000000..ce4fc15 --- /dev/null +++ b/tests/Package/Instruction/Tests/Prolog/prolog_default.txt @@ -0,0 +1,16 @@ +Test checks the prolog generation + +>>>>templates/test.tpl + + + + +foo + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +foo \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_encoding.txt b/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_encoding.txt new file mode 100644 index 0000000..81a3306 --- /dev/null +++ b/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_encoding.txt @@ -0,0 +1,21 @@ +Test checks the prolog generation with dynamic attributes + +>>>>templates/test.tpl + + + +foo + +foo + + +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->assign('fff', 'UTF-8'); + +>>>>result.txt + +foo +foo \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_standalone.txt b/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_standalone.txt new file mode 100644 index 0000000..8bc2f1b --- /dev/null +++ b/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_standalone.txt @@ -0,0 +1,21 @@ +Test checks the prolog generation with dynamic attributes + +>>>>templates/test.tpl + + + +foo + +foo + + +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->assign('fff', 'no'); + +>>>>result.txt + +foo +foo \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_version.txt b/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_version.txt new file mode 100644 index 0000000..4bd4dda --- /dev/null +++ b/tests/Package/Instruction/Tests/Prolog/prolog_dynamic_version.txt @@ -0,0 +1,21 @@ +Test checks the prolog generation with dynamic attributes + +>>>>templates/test.tpl + + + +foo + +foo + + +>>>>expected.txt +OUTPUT + +>>>>data.php +$view->assign('fff', '1.1'); + +>>>>result.txt + +foo +foo \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Prolog/prolog_in_content.txt b/tests/Package/Instruction/Tests/Prolog/prolog_in_content.txt new file mode 100644 index 0000000..99d95a7 --- /dev/null +++ b/tests/Package/Instruction/Tests/Prolog/prolog_in_content.txt @@ -0,0 +1,18 @@ +Test checks the prolog generation + +>>>>templates/test.tpl + + + +foo + +foo + + +>>>>expected.txt +OUTPUT + +>>>>result.txt + +foo +foo \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Repeat/repeat_basic.txt b/tests/Package/Instruction/Tests/Repeat/repeat_basic.txt new file mode 100644 index 0000000..5264618 --- /dev/null +++ b/tests/Package/Instruction/Tests/Repeat/repeat_basic.txt @@ -0,0 +1,25 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +foo + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +foo +foo +foo +foo +foo +foo +foo +foo +foo +foo \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Repeat/repeat_iterator.txt b/tests/Package/Instruction/Tests/Repeat/repeat_iterator.txt new file mode 100644 index 0000000..6a613e2 --- /dev/null +++ b/tests/Package/Instruction/Tests/Repeat/repeat_iterator.txt @@ -0,0 +1,25 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +{$system.repeat} + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +0:: +1:: +2:: +3:: +4:: +5:: +6:: +7:: +8:: +9 \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Repeat/repeat_separator.txt b/tests/Package/Instruction/Tests/Repeat/repeat_separator.txt new file mode 100644 index 0000000..c5a4dfb --- /dev/null +++ b/tests/Package/Instruction/Tests/Repeat/repeat_separator.txt @@ -0,0 +1,25 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +foo + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +foo:: +foo:: +foo:: +foo:: +foo:: +foo:: +foo:: +foo:: +foo:: +foo \ No newline at end of file diff --git a/tests/Package/Instruction/Tests/Repeat/repeat_separator_2.txt b/tests/Package/Instruction/Tests/Repeat/repeat_separator_2.txt new file mode 100644 index 0000000..69a8f90 --- /dev/null +++ b/tests/Package/Instruction/Tests/Repeat/repeat_separator_2.txt @@ -0,0 +1,26 @@ +Test checks the basic iteration features. + +>>>>templates/test.tpl + + + + +:: +foo + + + +>>>>expected.txt +OUTPUT + +>>>>result.txt +foo:: +foo:: +foo:: +foo:: +foo:: +foo:: +foo:: +foo:: +foo:: +foo \ No newline at end of file diff --git a/tests/run-bc.php b/tests/run-bc.php new file mode 100644 index 0000000..c6d881c --- /dev/null +++ b/tests/run-bc.php @@ -0,0 +1,113 @@ +#!/usr/bin/php +sourceDir = 'test://templates/'; + $tpl->compileDir = CPL_DIR; + $tpl->compileMode = Opt_Class::CM_REBUILD; + $tpl->parser = Opt_Class::HTML_MODE; + $tpl->stripWhitespaces = false; + $tpl->prologRequired = true; + $tpl->backwardCompatibility = true; + $tpl->setup(); + $this->tpl = $tpl; + } // end init(); + + public function run($test) + { + Extra_TestFS::loadFilesystem($test); + $view = new Opt_View('test.tpl'); + if(file_exists('test://data.php')) + { + eval(file_get_contents('test://data.php')); + } + + $out = new Opt_Output_Return; + $expected = file_get_contents('test://expected.txt'); + + if(strpos($expected, 'OUTPUT') === 0) + { + // This test shoud give correct results + try + { + $result = $out->render($view); + if($this->stripWs(trim(file_get_contents('test://result.txt'))) === ($o = $this->stripWs(trim($result)))) + { + return true; + } + echo $result; + die('Invalid output: '.$o."\n"); + } + catch(Opt_Exception $e) + { + die('Exception returned: #'.get_class($e).': '.$e->getMessage()."\n"); + } + } + else + { + // This test should generate an exception + $expected = trim($expected); + try + { + $out->render($view); + } + catch(Opt_Exception $e) + { + if($expected != get_class($e)) + { + die('Invalid exception returned: #'.get_class($e).', '.$expected." expected.\n"); + } + return true; + } + die("Exception NOT returned, but should be: ".$expected."\n"); + } + } // end run(); + + private function stripWs($text) + { + return str_replace(array("\r", "\n"),array('', ''), $text); + } // end stripws(); +} // end test; + +if(!file_exists($argv[1])) +{ + die("The specified test does not exist!\n"); +} + +$test = new test; +$test->init(); +if($test->run($argv[1])) +{ + die("OK\n"); +} diff --git a/tests/run-single.php b/tests/run-single.php index f2ad551..8caa11a 100644 --- a/tests/run-single.php +++ b/tests/run-single.php @@ -5,7 +5,7 @@ * we provide our own utility that allows to run and study a single test * case that uses the filesystem wrapper. * - * Usage: run.php /directory/something.txt + * Usage: run-single.php /directory/something.txt */ if($argc != 2 && $argc != 3) diff --git a/tools/lexer/expression_lexer.php b/tools/lexer/expression_lexer.php new file mode 100644 index 0000000..8071125 --- /dev/null +++ b/tools/lexer/expression_lexer.php @@ -0,0 +1,505 @@ + + * + * This file is subject to the new BSD license that is bundled + * with this package in the file LICENSE. It is also available through + * WWW at this URL: + * + * Copyright (c) Invenzzia Group + * and other contributors. See website for details. + * + * $Id$ + */ + +/** + * The lexer class for the expression parser. Note: this file + * is automatically generated by PHP Parser Generator lexer + * by Gregory Beaver. Do not modify it manually. Instead, + * use the file /tools/lexer/expression_lexer.plex and parse + * it with /tools/lexer/generateExpression.php. + */ +class Opt_Expression_Standard_Lexer +{ + /** + * The data field for the lexical analyzer. + */ + private $_data; + /** + * The token counter for the lexical analyzer. + */ + private $_counter; + /** + * The line counter for the lexical analyzer. + */ + private $_line; + + /** + * The recognized token number for parser. + * @var integer + */ + public $token; + + /** + * The recognized token value for parser. + * @var string + */ + public $value; + + /** + * Constructs the lexer object for parsing the specified + * expression. + * + * @param string $expression The expression to parse. + */ + public function __construct($expression) + { + $this->_data = $expression; + $this->_line = 1; + $this->_counter = 0; + } // end __construct(); + + + + private $_yy_state = 1; + private $_yy_stack = array(); + + function yylex() + { + return $this->{'yylex' . $this->_yy_state}(); + } + + function yypushstate($state) + { + array_push($this->_yy_stack, $this->_yy_state); + $this->_yy_state = $state; + } + + function yypopstate() + { + $this->_yy_state = array_pop($this->_yy_stack); + } + + function yybegin($state) + { + $this->_yy_state = $state; + } + + + + function yylex1() + { + $tokenMap = array ( + 1 => 0, + 2 => 1, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 0, + 16 => 0, + 17 => 0, + 18 => 0, + 19 => 0, + 20 => 0, + 21 => 0, + 22 => 0, + 23 => 0, + 24 => 0, + 25 => 0, + 26 => 0, + 27 => 0, + 28 => 0, + 29 => 0, + 30 => 0, + 31 => 0, + 32 => 0, + 33 => 0, + 34 => 0, + 35 => 0, + 36 => 0, + 37 => 0, + 38 => 0, + 39 => 0, + 40 => 0, + 41 => 0, + 42 => 0, + 43 => 0, + 44 => 0, + 45 => 0, + ); + if ($this->_counter >= strlen($this->_data)) { + return false; // end of input + } + $yy_global_pattern = "/^(\\s+)|^((\\+\\+|--))|^(\\+)|^(-)|^(\\*)|^(\/)|^(%)|^(\\^)|^(!)|^(==)|^(===)|^(!=)|^(!=)|^(~)|^(is\\s+between)|^(is\\s+not\\s+between)|^(is\\s+either)|^(is\\s+neither)|^(contains\\s+both)|^(contains\\s+either)|^(contains\\s+neither)|^(is\\s+in)|^(is\\s+not\\s+in)|^(is\\s+in\\s+both)|^(is\\s+in\\s+either)|^(is\\s+in\\s+neither)|^(\\$)|^(@)|^(\\.)|^(=)|^(\\()|^(\\))|^(<)|^(>)|^(\\[)|^(\\])|^(::)|^(,)|^(:)|^([a-zA-Z_][a-zA-Z0-9_]*)|^('[^'\\\\]*(?:\\\\.[^'\\\\]*)*')|^(`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|^([0-9]+\\.?[0-9]*)|^(0[xX][0-9a-fA-F]+)/"; + + do { + if (preg_match($yy_global_pattern, substr($this->_data, $this->_counter), $yymatches)) { + $yysubmatches = $yymatches; + $yymatches = array_filter($yymatches, 'strlen'); // remove empty sub-patterns + if (!count($yymatches)) { + throw new Exception('Error: lexing failed because a rule matched' . + 'an empty string. Input "' . substr($this->_data, + $this->_counter, 5) . '... state CODE'); + } + next($yymatches); // skip global match + $this->token = key($yymatches); // token number + if ($tokenMap[$this->token]) { + // extract sub-patterns for passing to lex function + $yysubmatches = array_slice($yysubmatches, $this->token + 1, + $tokenMap[$this->token]); + } else { + $yysubmatches = array(); + } + $this->value = current($yymatches); // token value + $r = $this->{'yy_r1_' . $this->token}($yysubmatches); + if ($r === null) { + $this->_counter += strlen($this->value); + $this->_line += substr_count($this->value, "\n"); + // accept this token + return true; + } elseif ($r === true) { + // we have changed state + // process this token in the new state + return $this->yylex(); + } elseif ($r === false) { + $this->_counter += strlen($this->value); + $this->_line += substr_count($this->value, "\n"); + if ($this->_counter >= strlen($this->_data)) { + return false; // end of input + } + // skip this token + continue; + } } else { + throw new Exception('Unexpected input at line' . $this->_line . + ': ' . $this->_data[$this->_counter]); + } + break; + } while (true); + + } // end function + + + const CODE = 1; + function yy_r1_1($yy_subpatterns) + { + + $this->token = 'w'; + } + function yy_r1_2($yy_subpatterns) + { + + if($this->value == '++') + { + $this->token = Opt_Expression_Standard_Parser::T_INCREMENT; + } + else + { + $this->token = Opt_Expression_Standard_Parser::T_DECREMENT; + } + } + function yy_r1_4($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_ADD; + } + function yy_r1_5($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_MINUS; + } + function yy_r1_6($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_MUL; + } + function yy_r1_7($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_DIV; + } + function yy_r1_8($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_MOD; + } + function yy_r1_9($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_EXP; + } + function yy_r1_10($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_NOT; + } + function yy_r1_11($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_EQUALS; + } + function yy_r1_12($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_EQUALS_T; + } + function yy_r1_13($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_NEQUALS; + } + function yy_r1_14($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_NEQUALS_T; + } + function yy_r1_15($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_CONCAT; + } + function yy_r1_16($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_BETWEEN; + } + function yy_r1_17($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_NOT_BETWEEN; + } + function yy_r1_18($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_EITHER; + } + function yy_r1_19($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_NEITHER; + } + function yy_r1_20($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_CONTAINS_BOTH; + } + function yy_r1_21($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_CONTAINS_EITHER; + } + function yy_r1_22($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_CONTAINS_NEITHER; + } + function yy_r1_23($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_IN; + } + function yy_r1_24($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_NOT_IN; + } + function yy_r1_25($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_BOTH_IN; + } + function yy_r1_26($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_EITHER_IN; + } + function yy_r1_27($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_IS_NEITHER_IN; + } + function yy_r1_28($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_DOLLAR; + } + function yy_r1_29($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_AT; + } + function yy_r1_30($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_DOT; + } + function yy_r1_31($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_ASSIGN; + } + function yy_r1_32($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_L_BRACKET; + } + function yy_r1_33($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_R_BRACKET; + } + function yy_r1_34($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_DLSQ_BRACKET; + } + function yy_r1_35($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_DRSQ_BRACKET; + } + function yy_r1_36($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_LSQ_BRACKET; + } + function yy_r1_37($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_RSQ_BRACKET; + } + function yy_r1_38($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_OBJECT_OPERATOR; + } + function yy_r1_39($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_COMMA; + } + function yy_r1_40($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_COLON; + } + function yy_r1_41($yy_subpatterns) + { + + switch($this->value) + { + case 'add': + $this->token = Opt_Expression_Standard_Parser::T_ADD; + break; + case 'sub': + $this->token = Opt_Expression_Standard_Parser::T_SUB; + break; + case 'mul': + $this->token = Opt_Expression_Standard_Parser::T_MUL; + break; + case 'div': + $this->token = Opt_Expression_Standard_Parser::T_DIV; + break; + case 'mod': + $this->token = Opt_Expression_Standard_Parser::T_MOD; + break; + case 'exp': + $this->token = Opt_Expression_Standard_Parser::T_EXP; + break; + case 'and': + $this->token = Opt_Expression_Standard_Parser::T_AND; + break; + case 'or': + $this->token = Opt_Expression_Standard_Parser::T_OR; + break; + case 'nor': + $this->token = Opt_Expression_Standard_Parser::T_NOR; + break; + case 'not': + $this->token = Opt_Expression_Standard_Parser::T_NOT; + break; + case 'xor': + $this->token = Opt_Expression_Standard_Parser::T_XOR; + break; + case 'eq': + $this->token = Opt_Expression_Standard_Parser::T_EQUALS; + break; + case 'neq': + $this->token = Opt_Expression_Standard_Parser::T_NEQUALS; + break; + case 'eqt': + $this->token = Opt_Expression_Standard_Parser::T_EQUALS_T; + break; + case 'neqt': + $this->token = Opt_Expression_Standard_Parser::T_NEQUALS_T; + break; + case 'gt': + $this->token = Opt_Expression_Standard_Parser::T_GT; + break; + case 'lt': + $this->token = Opt_Expression_Standard_Parser::T_LT; + break; + case 'gte': + $this->token = Opt_Expression_Standard_Parser::T_GTE; + break; + case 'lte': + $this->token = Opt_Expression_Standard_Parser::T_LTE; + break; + case 'contains': + $this->token = Opt_Expression_Standard_Parser::T_CONTAINS; + break; + case 'exists': + $this->token = Opt_Expression_Standard_Parser::T_EXISTS; + break; + case 'is': + $this->token = Opt_Expression_Standard_Parser::T_ASSIGN; + break; + case 'true': + $this->token = Opt_Expression_Standard_Parser::T_TRUE; + break; + case 'false': + $this->token = Opt_Expression_Standard_Parser::T_FALSE; + break; + case 'null': + $this->token = Opt_Expression_Standard_Parser::T_NULL; + break; + case 'new': + $this->token = Opt_Expression_Standard_Parser::T_NEW; + break; + case 'clone': + $this->token = Opt_Expression_Standard_Parser::T_CLONE; + break; + default: + $this->token = Opt_Expression_Standard_Parser::T_IDENTIFIER; + } + } + function yy_r1_42($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_STRING; + } + function yy_r1_43($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_BACKTICKS; + } + function yy_r1_44($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_NUMBER; + } + function yy_r1_45($yy_subpatterns) + { + + $this->token = Opt_Expression_Standard_Parser::T_NUMBER; + } + + +} // end Opt_Expression_Standard_Lexer; \ No newline at end of file diff --git a/tools/lexer/expression_parser.out b/tools/lexer/expression_parser.out new file mode 100644 index 0000000..29906b7 --- /dev/null +++ b/tools/lexer/expression_parser.out @@ -0,0 +1,12512 @@ +State 0: + overall_expr ::= * expr + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + overall_expr accept + expr shift 83 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 1: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + argument_list ::= * expr + argument_list ::= * expr COMMA argument_list + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + container_def ::= * single_container_def + container_def ::= * single_container_def COMMA container_def + single_container_def ::= * expr COLON expr + single_container_def ::= * expr + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER L_BRACKET * container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER L_BRACKET * argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + functional ::= IDENTIFIER L_BRACKET * R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + R_BRACKET shift 177 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 70 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + argument_list shift 144 + container_def shift 143 + single_container_def shift 139 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 2: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= LSQ_BRACKET * RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + container_creator ::= LSQ_BRACKET * container_def RSQ_BRACKET + container_def ::= * single_container_def + container_def ::= * single_container_def COMMA container_def + single_container_def ::= * expr COLON expr + single_container_def ::= * expr + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + RSQ_BRACKET shift 179 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 71 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + container_def shift 145 + single_container_def shift 139 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 3: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + container_def ::= * single_container_def + container_def ::= * single_container_def COMMA container_def + container_def ::= single_container_def COMMA * container_def + single_container_def ::= * expr COLON expr + single_container_def ::= * expr + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 71 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + container_def shift 166 + single_container_def shift 139 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 4: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + argument_list ::= * expr + argument_list ::= * expr COMMA argument_list + argument_list ::= expr COMMA * argument_list + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 75 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + argument_list shift 159 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 5: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + argument_list ::= * expr + argument_list ::= * expr COMMA argument_list + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + object_creator ::= NEW IDENTIFIER L_BRACKET * argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 75 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + argument_list shift 146 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 6: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= expr IS_IN * expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 114 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 7: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= expr AND * expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= expr IS_NOT_BETWEEN expr AND * expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 106 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 8: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= expr IS_EITHER * expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 82 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 9: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= expr OR * expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= expr IS_EITHER expr OR * expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 109 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 10: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= expr IS_NOT_BETWEEN * expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 90 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 11: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= expr IS_NEITHER * expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 80 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 12: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= expr IS_NEITHER expr NOR * expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 108 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 13: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= expr AND * expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= expr CONTAINS_BOTH expr AND * expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 110 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 14: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= expr CONTAINS_NEITHER * expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 79 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 15: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= expr OR * expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= expr CONTAINS_EITHER expr OR * expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 112 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 16: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= expr CONTAINS_EITHER * expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 86 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 17: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= expr CONTAINS_NEITHER expr NOR * expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 111 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 18: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= expr CONTAINS_BOTH * expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 88 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 19: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= expr IS_BETWEEN * expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 85 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 20: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= expr IS_NOT_IN * expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 115 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 21: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= expr AND * expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= expr IS_BETWEEN expr AND * expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 107 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 22: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= expr IS_NEITHER_IN expr NOR * expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 93 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 23: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= object_field_call LSQ_BRACKET * expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 74 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 24: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= variable ASSIGN * expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 127 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 25: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= simple_variable LSQ_BRACKET * expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 78 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 26: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= CLONE * expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 84 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 27: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= array_call LSQ_BRACKET * expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 76 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 28: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + single_container_def ::= expr COLON * expr + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 87 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 29: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + single_container_call ::= DOT L_BRACKET * expr R_BRACKET + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 73 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 30: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= variable IS * expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 89 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 31: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= L_BRACKET * expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 77 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 32: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= expr CONTAINS * expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 113 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 33: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= expr IS_NEITHER_IN * expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 72 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 34: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + cexpr ::= expr IS_BOTH_IN * expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 94 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 35: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= expr AND * expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + cexpr ::= expr IS_BOTH_IN expr AND * expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 92 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 36: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= MINUS * expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + number ::= MINUS * NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 172 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 119 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 37: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= NOT * expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 125 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 38: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= expr IS_EITHER_IN * expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 91 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 39: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= expr OR * expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= expr IS_EITHER_IN expr OR * expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 81 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 40: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= expr NEQUALS_T * expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 101 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 41: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= expr NEQUALS * expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 98 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 42: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= expr MUL * expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 122 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 43: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= expr EXP * expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 126 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 44: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= expr SUB * expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 117 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 45: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= expr MINUS * expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 118 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 46: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= expr DIV * expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 123 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 47: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= expr EQUALS_T * expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 100 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 48: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= expr OR * expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 96 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 49: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= expr XOR * expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 97 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 50: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= expr EQUALS * expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 99 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 51: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= expr AND * expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 95 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 52: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= expr MOD * expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 124 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 53: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= expr GTE * expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 105 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 54: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= expr GT * expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 104 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 55: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + expr ::= expr CONCAT * expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 116 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 56: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= expr LT * expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 103 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 57: + expr ::= * expr ADD expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= expr LTE * expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 102 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 58: + expr ::= * expr ADD expr + expr ::= expr ADD * expr + expr ::= * expr SUB expr + expr ::= * expr MINUS expr + expr ::= * expr MUL expr + expr ::= * expr DIV expr + expr ::= * expr MOD expr + expr ::= * expr AND expr + expr ::= * expr OR expr + expr ::= * expr XOR expr + expr ::= * expr EXP expr + expr ::= * expr EQUALS expr + expr ::= * expr EQUALS_T expr + expr ::= * expr NEQUALS expr + expr ::= * expr NEQUALS_T expr + expr ::= * expr GT expr + expr ::= * expr GTE expr + expr ::= * expr LT expr + expr ::= * expr LTE expr + expr ::= * expr CONCAT expr + cexpr ::= * expr CONTAINS expr + cexpr ::= * expr CONTAINS_EITHER expr OR expr + cexpr ::= * expr CONTAINS_NEITHER expr NOR expr + cexpr ::= * expr CONTAINS_BOTH expr AND expr + cexpr ::= * expr IS_BETWEEN expr AND expr + cexpr ::= * expr IS_NOT_BETWEEN expr AND expr + cexpr ::= * expr IS_EITHER expr OR expr + cexpr ::= * expr IS_NEITHER expr NOR expr + cexpr ::= * expr IS_IN expr + cexpr ::= * expr IS_NOT_IN expr + cexpr ::= * expr IS_EITHER_IN expr OR expr + cexpr ::= * expr IS_NEITHER_IN expr NOR expr + cexpr ::= * expr IS_BOTH_IN expr AND expr + expr ::= * NOT expr + expr ::= * MINUS expr + expr ::= * L_BRACKET expr R_BRACKET + expr ::= * cexpr + expr ::= * variable INCREMENT + expr ::= * INCREMENT variable + expr ::= * variable DECREMENT + expr ::= * DECREMENT variable + expr ::= * variable ASSIGN expr + expr ::= * variable IS expr + expr ::= * variable EXISTS + expr ::= * CLONE expr + expr ::= * variable + expr ::= * static_value + expr ::= * calculated + expr ::= * language_variable + expr ::= * container_creator + expr ::= * object_creator + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + static_value ::= * number + static_value ::= * string + static_value ::= * BACKTICK_STRING + static_value ::= * boolean + static_value ::= * NULL + string ::= * STRING + string ::= * IDENTIFIER + number ::= * NUMBER + number ::= * MINUS NUMBER + boolean ::= * TRUE + boolean ::= * FALSE + container_creator ::= * LSQ_BRACKET RSQ_BRACKET + container_creator ::= * LSQ_BRACKET container_def RSQ_BRACKET + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + language_variable ::= * DOLLAR IDENTIFIER AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + calculated ::= * function_call + calculated ::= * method_call + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + object_creator ::= * NEW IDENTIFIER + object_creator ::= * NEW IDENTIFIER L_BRACKET argument_list R_BRACKET + + MINUS shift 36 + NOT shift 37 + INCREMENT shift 59 + DECREMENT shift 60 + L_BRACKET shift 31 + CLONE shift 26 + BACKTICK_STRING shift 182 + NULL shift 187 + STRING shift 191 + IDENTIFIER shift 130 + NUMBER shift 188 + TRUE shift 189 + FALSE shift 190 + LSQ_BRACKET shift 2 + DOLLAR shift 135 + AT shift 137 + NEW shift 149 + expr shift 120 + cexpr shift 168 + variable shift 121 + static_value shift 160 + calculated shift 161 + language_variable shift 164 + container_creator shift 162 + object_creator shift 180 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + number shift 183 + string shift 181 + boolean shift 186 + method_call shift 138 + function_call shift 147 + functional shift 194 + +State 59: + expr ::= INCREMENT * variable + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + + IDENTIFIER shift 132 + DOLLAR shift 141 + AT shift 137 + variable shift 175 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + method_call shift 140 + function_call shift 142 + functional shift 194 + +State 60: + expr ::= DECREMENT * variable + variable ::= * simple_variable + variable ::= * object_field_call + variable ::= * array_call + simple_variable ::= * script_variable + simple_variable ::= * template_variable + simple_variable ::= * container + script_variable ::= * DOLLAR IDENTIFIER + template_variable ::= * AT IDENTIFIER + container ::= * script_variable container_call + container ::= * template_variable container_call + object_field_call ::= * simple_variable OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * IDENTIFIER OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * object_field_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * array_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * method_call OBJECT_OPERATOR IDENTIFIER + object_field_call ::= * function_call OBJECT_OPERATOR IDENTIFIER + method_call ::= * simple_variable OBJECT_OPERATOR functional + method_call ::= * IDENTIFIER OBJECT_OPERATOR functional + method_call ::= * object_field_call OBJECT_OPERATOR functional + method_call ::= * array_call OBJECT_OPERATOR functional + method_call ::= * method_call OBJECT_OPERATOR functional + method_call ::= * function_call OBJECT_OPERATOR functional + array_call ::= * simple_variable LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * array_call LSQ_BRACKET expr RSQ_BRACKET + array_call ::= * object_field_call LSQ_BRACKET expr RSQ_BRACKET + function_call ::= * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + + IDENTIFIER shift 132 + DOLLAR shift 141 + AT shift 137 + variable shift 165 + simple_variable shift 129 + object_field_call shift 131 + array_call shift 133 + script_variable shift 62 + template_variable shift 61 + container shift 185 + method_call shift 140 + function_call shift 142 + functional shift 194 + +State 61: + (55) simple_variable ::= template_variable * + container ::= template_variable * container_call + container_call ::= * single_container_call + container_call ::= * single_container_call container_call + single_container_call ::= * DOT IDENTIFIER + single_container_call ::= * DOT NUMBER + single_container_call ::= * DOT L_BRACKET expr R_BRACKET + + DOT shift 128 + container_call shift 193 + single_container_call shift 63 + {default} reduce 55 + +State 62: + (54) simple_variable ::= script_variable * + container ::= script_variable * container_call + container_call ::= * single_container_call + container_call ::= * single_container_call container_call + single_container_call ::= * DOT IDENTIFIER + single_container_call ::= * DOT NUMBER + single_container_call ::= * DOT L_BRACKET expr R_BRACKET + + DOT shift 128 + container_call shift 199 + single_container_call shift 63 + {default} reduce 54 + +State 63: + container_call ::= * single_container_call + (81) container_call ::= single_container_call * + container_call ::= * single_container_call container_call + container_call ::= single_container_call * container_call + single_container_call ::= * DOT IDENTIFIER + single_container_call ::= * DOT NUMBER + single_container_call ::= * DOT L_BRACKET expr R_BRACKET + + DOT shift 128 + container_call shift 200 + single_container_call shift 63 + {default} reduce 81 + +State 64: + object_field_call ::= array_call OBJECT_OPERATOR * IDENTIFIER + method_call ::= array_call OBJECT_OPERATOR * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + + IDENTIFIER shift 154 + functional shift 197 + +State 65: + object_field_call ::= function_call OBJECT_OPERATOR * IDENTIFIER + method_call ::= function_call OBJECT_OPERATOR * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + + IDENTIFIER shift 148 + functional shift 195 + +State 66: + object_field_call ::= IDENTIFIER OBJECT_OPERATOR * IDENTIFIER + method_call ::= IDENTIFIER OBJECT_OPERATOR * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + + IDENTIFIER shift 153 + functional shift 198 + +State 67: + object_field_call ::= simple_variable OBJECT_OPERATOR * IDENTIFIER + method_call ::= simple_variable OBJECT_OPERATOR * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + + IDENTIFIER shift 152 + functional shift 178 + +State 68: + object_field_call ::= method_call OBJECT_OPERATOR * IDENTIFIER + method_call ::= method_call OBJECT_OPERATOR * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + + IDENTIFIER shift 151 + functional shift 203 + +State 69: + object_field_call ::= object_field_call OBJECT_OPERATOR * IDENTIFIER + method_call ::= object_field_call OBJECT_OPERATOR * functional + functional ::= * IDENTIFIER L_BRACKET container_def R_BRACKET + functional ::= * IDENTIFIER L_BRACKET argument_list R_BRACKET + functional ::= * IDENTIFIER L_BRACKET R_BRACKET + + IDENTIFIER shift 155 + functional shift 158 + +State 70: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (68) argument_list ::= expr * + argument_list ::= expr * COMMA argument_list + single_container_def ::= expr * COLON expr + (75) single_container_def ::= expr * + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + COLON shift 28 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + R_BRACKET reduce 75 ** Parsing conflict ** + COMMA shift 4 + COMMA reduce 75 ** Parsing conflict ** + {default} reduce 68 + +State 71: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + single_container_def ::= expr * COLON expr + (75) single_container_def ::= expr * + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + COLON shift 28 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + {default} reduce 75 + +State 72: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr IS_NEITHER_IN expr * NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + NOR shift 22 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 73: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + single_container_call ::= DOT L_BRACKET expr * R_BRACKET + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + R_BRACKET shift 201 + +State 74: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + array_call ::= object_field_call LSQ_BRACKET expr * RSQ_BRACKET + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + RSQ_BRACKET shift 157 + +State 75: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (68) argument_list ::= expr * + argument_list ::= expr * COMMA argument_list + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + COMMA shift 4 + {default} reduce 68 + +State 76: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + array_call ::= array_call LSQ_BRACKET expr * RSQ_BRACKET + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + RSQ_BRACKET shift 196 + +State 77: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + expr ::= L_BRACKET expr * R_BRACKET + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + R_BRACKET shift 170 + +State 78: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + array_call ::= simple_variable LSQ_BRACKET expr * RSQ_BRACKET + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + RSQ_BRACKET shift 169 + +State 79: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr CONTAINS_NEITHER expr * NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + NOR shift 17 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 80: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr IS_NEITHER expr * NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + NOR shift 12 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 81: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + (8) expr ::= expr OR expr * + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + (30) cexpr ::= expr IS_EITHER_IN expr OR expr * + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND reduce 8 + AND reduce 30 ** Parsing conflict ** + OR reduce 8 + OR reduce 30 ** Parsing conflict ** + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 8 ** Parsing conflict ** + IS_EITHER_IN reduce 30 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 8 ** Parsing conflict ** + IS_NEITHER_IN reduce 30 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 8 ** Parsing conflict ** + IS_BOTH_IN reduce 30 ** Parsing conflict ** + {default} reduce 30 + +State 82: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr IS_EITHER expr * OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 51 + OR shift 9 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 83: + (0) overall_expr ::= expr * + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + {default} reduce 0 + +State 84: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (44) expr ::= CLONE expr * + + AND shift 51 + AND reduce 44 ** Parsing conflict ** + OR shift 48 + OR reduce 44 ** Parsing conflict ** + XOR shift 49 + XOR reduce 44 ** Parsing conflict ** + EQUALS shift 50 + EQUALS reduce 44 ** Parsing conflict ** + EQUALS_T shift 47 + EQUALS_T reduce 44 ** Parsing conflict ** + NEQUALS shift 41 + NEQUALS reduce 44 ** Parsing conflict ** + NEQUALS_T shift 40 + NEQUALS_T reduce 44 ** Parsing conflict ** + GT shift 54 + GT reduce 44 ** Parsing conflict ** + GTE shift 53 + GTE reduce 44 ** Parsing conflict ** + LT shift 56 + LT reduce 44 ** Parsing conflict ** + LTE shift 57 + LTE reduce 44 ** Parsing conflict ** + IS_BETWEEN shift 19 + IS_BETWEEN reduce 44 ** Parsing conflict ** + IS_NOT_BETWEEN shift 10 + IS_NOT_BETWEEN reduce 44 ** Parsing conflict ** + IS_EITHER shift 8 + IS_EITHER reduce 44 ** Parsing conflict ** + IS_NEITHER shift 11 + IS_NEITHER reduce 44 ** Parsing conflict ** + CONTAINS shift 32 + CONTAINS reduce 44 ** Parsing conflict ** + CONTAINS_EITHER shift 16 + CONTAINS_EITHER reduce 44 ** Parsing conflict ** + CONTAINS_NEITHER shift 14 + CONTAINS_NEITHER reduce 44 ** Parsing conflict ** + CONTAINS_BOTH shift 18 + CONTAINS_BOTH reduce 44 ** Parsing conflict ** + IS_IN shift 6 + IS_IN reduce 44 ** Parsing conflict ** + IS_NOT_IN shift 20 + IS_NOT_IN reduce 44 ** Parsing conflict ** + ADD shift 58 + ADD reduce 44 ** Parsing conflict ** + SUB shift 44 + SUB reduce 44 ** Parsing conflict ** + MINUS shift 45 + MINUS reduce 44 ** Parsing conflict ** + CONCAT shift 55 + CONCAT reduce 44 ** Parsing conflict ** + MUL shift 42 + MUL reduce 44 ** Parsing conflict ** + DIV shift 46 + DIV reduce 44 ** Parsing conflict ** + MOD shift 52 + MOD reduce 44 ** Parsing conflict ** + EXP shift 43 + EXP reduce 44 ** Parsing conflict ** + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 44 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 44 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 44 ** Parsing conflict ** + {default} reduce 44 + +State 85: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr IS_BETWEEN expr * AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 21 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 86: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr CONTAINS_EITHER expr * OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 51 + OR shift 15 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 87: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (74) single_container_def ::= expr COLON expr * + + AND shift 51 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + {default} reduce 74 + +State 88: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr CONTAINS_BOTH expr * AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 13 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 89: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (42) expr ::= variable IS expr * + + AND shift 51 + AND reduce 42 ** Parsing conflict ** + OR shift 48 + OR reduce 42 ** Parsing conflict ** + XOR shift 49 + XOR reduce 42 ** Parsing conflict ** + EQUALS shift 50 + EQUALS reduce 42 ** Parsing conflict ** + EQUALS_T shift 47 + EQUALS_T reduce 42 ** Parsing conflict ** + NEQUALS shift 41 + NEQUALS reduce 42 ** Parsing conflict ** + NEQUALS_T shift 40 + NEQUALS_T reduce 42 ** Parsing conflict ** + GT shift 54 + GT reduce 42 ** Parsing conflict ** + GTE shift 53 + GTE reduce 42 ** Parsing conflict ** + LT shift 56 + LT reduce 42 ** Parsing conflict ** + LTE shift 57 + LTE reduce 42 ** Parsing conflict ** + IS_BETWEEN shift 19 + IS_BETWEEN reduce 42 ** Parsing conflict ** + IS_NOT_BETWEEN shift 10 + IS_NOT_BETWEEN reduce 42 ** Parsing conflict ** + IS_EITHER shift 8 + IS_EITHER reduce 42 ** Parsing conflict ** + IS_NEITHER shift 11 + IS_NEITHER reduce 42 ** Parsing conflict ** + CONTAINS shift 32 + CONTAINS reduce 42 ** Parsing conflict ** + CONTAINS_EITHER shift 16 + CONTAINS_EITHER reduce 42 ** Parsing conflict ** + CONTAINS_NEITHER shift 14 + CONTAINS_NEITHER reduce 42 ** Parsing conflict ** + CONTAINS_BOTH shift 18 + CONTAINS_BOTH reduce 42 ** Parsing conflict ** + IS_IN shift 6 + IS_IN reduce 42 ** Parsing conflict ** + IS_NOT_IN shift 20 + IS_NOT_IN reduce 42 ** Parsing conflict ** + ADD shift 58 + ADD reduce 42 ** Parsing conflict ** + SUB shift 44 + SUB reduce 42 ** Parsing conflict ** + MINUS shift 45 + MINUS reduce 42 ** Parsing conflict ** + CONCAT shift 55 + CONCAT reduce 42 ** Parsing conflict ** + MUL shift 42 + MUL reduce 42 ** Parsing conflict ** + DIV shift 46 + DIV reduce 42 ** Parsing conflict ** + MOD shift 52 + MOD reduce 42 ** Parsing conflict ** + EXP shift 43 + EXP reduce 42 ** Parsing conflict ** + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 42 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 42 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 42 ** Parsing conflict ** + {default} reduce 42 + +State 90: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr IS_NOT_BETWEEN expr * AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 7 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 91: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr IS_EITHER_IN expr * OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 51 + OR shift 39 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 92: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + (7) expr ::= expr AND expr * + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (32) cexpr ::= expr IS_BOTH_IN expr AND expr * + + AND reduce 7 + AND reduce 32 ** Parsing conflict ** + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 7 ** Parsing conflict ** + IS_EITHER_IN reduce 32 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 7 ** Parsing conflict ** + IS_NEITHER_IN reduce 32 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 7 ** Parsing conflict ** + IS_BOTH_IN reduce 32 ** Parsing conflict ** + {default} reduce 32 + +State 93: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + (31) cexpr ::= expr IS_NEITHER_IN expr NOR expr * + cexpr ::= expr * IS_BOTH_IN expr AND expr + + AND shift 51 + AND reduce 31 ** Parsing conflict ** + OR shift 48 + OR reduce 31 ** Parsing conflict ** + XOR shift 49 + XOR reduce 31 ** Parsing conflict ** + EQUALS shift 50 + EQUALS reduce 31 ** Parsing conflict ** + EQUALS_T shift 47 + EQUALS_T reduce 31 ** Parsing conflict ** + NEQUALS shift 41 + NEQUALS reduce 31 ** Parsing conflict ** + NEQUALS_T shift 40 + NEQUALS_T reduce 31 ** Parsing conflict ** + GT shift 54 + GT reduce 31 ** Parsing conflict ** + GTE shift 53 + GTE reduce 31 ** Parsing conflict ** + LT shift 56 + LT reduce 31 ** Parsing conflict ** + LTE shift 57 + LTE reduce 31 ** Parsing conflict ** + IS_BETWEEN shift 19 + IS_BETWEEN reduce 31 ** Parsing conflict ** + IS_NOT_BETWEEN shift 10 + IS_NOT_BETWEEN reduce 31 ** Parsing conflict ** + IS_EITHER shift 8 + IS_EITHER reduce 31 ** Parsing conflict ** + IS_NEITHER shift 11 + IS_NEITHER reduce 31 ** Parsing conflict ** + CONTAINS shift 32 + CONTAINS reduce 31 ** Parsing conflict ** + CONTAINS_EITHER shift 16 + CONTAINS_EITHER reduce 31 ** Parsing conflict ** + CONTAINS_NEITHER shift 14 + CONTAINS_NEITHER reduce 31 ** Parsing conflict ** + CONTAINS_BOTH shift 18 + CONTAINS_BOTH reduce 31 ** Parsing conflict ** + IS_IN shift 6 + IS_IN reduce 31 ** Parsing conflict ** + IS_NOT_IN shift 20 + IS_NOT_IN reduce 31 ** Parsing conflict ** + ADD shift 58 + ADD reduce 31 ** Parsing conflict ** + SUB shift 44 + SUB reduce 31 ** Parsing conflict ** + MINUS shift 45 + MINUS reduce 31 ** Parsing conflict ** + CONCAT shift 55 + CONCAT reduce 31 ** Parsing conflict ** + MUL shift 42 + MUL reduce 31 ** Parsing conflict ** + DIV shift 46 + DIV reduce 31 ** Parsing conflict ** + MOD shift 52 + MOD reduce 31 ** Parsing conflict ** + EXP shift 43 + EXP reduce 31 ** Parsing conflict ** + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 31 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 31 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 31 ** Parsing conflict ** + {default} reduce 31 + +State 94: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + cexpr ::= expr IS_BOTH_IN expr * AND expr + + AND shift 35 + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_NEITHER_IN shift 33 + IS_BOTH_IN shift 34 + +State 95: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + (7) expr ::= expr AND expr * + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + OR shift 48 + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 7 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 7 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 7 ** Parsing conflict ** + {default} reduce 7 + +State 96: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + (8) expr ::= expr OR expr * + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + XOR shift 49 + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 8 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 8 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 8 ** Parsing conflict ** + {default} reduce 8 + +State 97: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + (9) expr ::= expr XOR expr * + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + EQUALS shift 50 + EQUALS_T shift 47 + NEQUALS shift 41 + NEQUALS_T shift 40 + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 9 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 9 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 9 ** Parsing conflict ** + {default} reduce 9 + +State 98: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + (13) expr ::= expr NEQUALS expr * + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 13 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 13 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 13 ** Parsing conflict ** + {default} reduce 13 + +State 99: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + (11) expr ::= expr EQUALS expr * + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 11 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 11 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 11 ** Parsing conflict ** + {default} reduce 11 + +State 100: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + (12) expr ::= expr EQUALS_T expr * + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 12 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 12 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 12 ** Parsing conflict ** + {default} reduce 12 + +State 101: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + (14) expr ::= expr NEQUALS_T expr * + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + GT shift 54 + GTE shift 53 + LT shift 56 + LTE shift 57 + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 14 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 14 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 14 ** Parsing conflict ** + {default} reduce 14 + +State 102: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + (18) expr ::= expr LTE expr * + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 18 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 18 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 18 ** Parsing conflict ** + {default} reduce 18 + +State 103: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + (17) expr ::= expr LT expr * + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 17 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 17 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 17 ** Parsing conflict ** + {default} reduce 17 + +State 104: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + (15) expr ::= expr GT expr * + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 15 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 15 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 15 ** Parsing conflict ** + {default} reduce 15 + +State 105: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + (16) expr ::= expr GTE expr * + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_BETWEEN shift 19 + IS_NOT_BETWEEN shift 10 + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 16 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 16 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 16 ** Parsing conflict ** + {default} reduce 16 + +State 106: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + (7) expr ::= expr AND expr * + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + (25) cexpr ::= expr IS_NOT_BETWEEN expr AND expr * + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 7 ** Parsing conflict ** + IS_EITHER_IN reduce 25 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 7 ** Parsing conflict ** + IS_NEITHER_IN reduce 25 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 7 ** Parsing conflict ** + IS_BOTH_IN reduce 25 ** Parsing conflict ** + {default} reduce 25 + +State 107: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + (7) expr ::= expr AND expr * + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + (24) cexpr ::= expr IS_BETWEEN expr AND expr * + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_EITHER shift 8 + IS_NEITHER shift 11 + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 7 ** Parsing conflict ** + IS_EITHER_IN reduce 24 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 7 ** Parsing conflict ** + IS_NEITHER_IN reduce 24 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 7 ** Parsing conflict ** + IS_BOTH_IN reduce 24 ** Parsing conflict ** + {default} reduce 24 + +State 108: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + (27) cexpr ::= expr IS_NEITHER expr NOR expr * + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 27 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 27 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 27 ** Parsing conflict ** + {default} reduce 27 + +State 109: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + (8) expr ::= expr OR expr * + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + (26) cexpr ::= expr IS_EITHER expr OR expr * + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + CONTAINS shift 32 + CONTAINS_EITHER shift 16 + CONTAINS_NEITHER shift 14 + CONTAINS_BOTH shift 18 + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 8 ** Parsing conflict ** + IS_EITHER_IN reduce 26 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 8 ** Parsing conflict ** + IS_NEITHER_IN reduce 26 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 8 ** Parsing conflict ** + IS_BOTH_IN reduce 26 ** Parsing conflict ** + {default} reduce 26 + +State 110: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + (7) expr ::= expr AND expr * + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + (23) cexpr ::= expr CONTAINS_BOTH expr AND expr * + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 7 ** Parsing conflict ** + IS_EITHER_IN reduce 23 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 7 ** Parsing conflict ** + IS_NEITHER_IN reduce 23 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 7 ** Parsing conflict ** + IS_BOTH_IN reduce 23 ** Parsing conflict ** + {default} reduce 23 + +State 111: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + (22) cexpr ::= expr CONTAINS_NEITHER expr NOR expr * + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 22 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 22 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 22 ** Parsing conflict ** + {default} reduce 22 + +State 112: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + (8) expr ::= expr OR expr * + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + (21) cexpr ::= expr CONTAINS_EITHER expr OR expr * + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 8 ** Parsing conflict ** + IS_EITHER_IN reduce 21 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 8 ** Parsing conflict ** + IS_NEITHER_IN reduce 21 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 8 ** Parsing conflict ** + IS_BOTH_IN reduce 21 ** Parsing conflict ** + {default} reduce 21 + +State 113: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + (20) cexpr ::= expr CONTAINS expr * + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + IS_IN shift 6 + IS_NOT_IN shift 20 + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 20 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 20 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 20 ** Parsing conflict ** + {default} reduce 20 + +State 114: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + (28) cexpr ::= expr IS_IN expr * + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 28 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 28 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 28 ** Parsing conflict ** + {default} reduce 28 + +State 115: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + (29) cexpr ::= expr IS_NOT_IN expr * + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + ADD shift 58 + SUB shift 44 + MINUS shift 45 + CONCAT shift 55 + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 29 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 29 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 29 ** Parsing conflict ** + {default} reduce 29 + +State 116: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + (19) expr ::= expr CONCAT expr * + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 19 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 19 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 19 ** Parsing conflict ** + {default} reduce 19 + +State 117: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + (2) expr ::= expr SUB expr * + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 2 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 2 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 2 ** Parsing conflict ** + {default} reduce 2 + +State 118: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + (3) expr ::= expr MINUS expr * + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 3 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 3 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 3 ** Parsing conflict ** + {default} reduce 3 + +State 119: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (34) expr ::= MINUS expr * + + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 34 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 34 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 34 ** Parsing conflict ** + {default} reduce 34 + +State 120: + expr ::= expr * ADD expr + (1) expr ::= expr ADD expr * + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + MUL shift 42 + DIV shift 46 + MOD shift 52 + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 1 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 1 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 1 ** Parsing conflict ** + {default} reduce 1 + +State 121: + expr ::= variable * INCREMENT + expr ::= variable * DECREMENT + expr ::= variable * ASSIGN expr + expr ::= variable * IS expr + expr ::= variable * EXISTS + (45) expr ::= variable * + + ASSIGN shift 24 + INCREMENT shift 173 + DECREMENT shift 174 + IS shift 30 + EXISTS shift 171 + {default} reduce 45 + +State 122: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + (4) expr ::= expr MUL expr * + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 4 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 4 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 4 ** Parsing conflict ** + {default} reduce 4 + +State 123: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + (5) expr ::= expr DIV expr * + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 5 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 5 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 5 ** Parsing conflict ** + {default} reduce 5 + +State 124: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + (6) expr ::= expr MOD expr * + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 6 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 6 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 6 ** Parsing conflict ** + {default} reduce 6 + +State 125: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (33) expr ::= NOT expr * + + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 33 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 33 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 33 ** Parsing conflict ** + {default} reduce 33 + +State 126: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + (10) expr ::= expr EXP expr * + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + + EXP shift 43 + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 10 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 10 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 10 ** Parsing conflict ** + {default} reduce 10 + +State 127: + expr ::= expr * ADD expr + expr ::= expr * SUB expr + expr ::= expr * MINUS expr + expr ::= expr * MUL expr + expr ::= expr * DIV expr + expr ::= expr * MOD expr + expr ::= expr * AND expr + expr ::= expr * OR expr + expr ::= expr * XOR expr + expr ::= expr * EXP expr + expr ::= expr * EQUALS expr + expr ::= expr * EQUALS_T expr + expr ::= expr * NEQUALS expr + expr ::= expr * NEQUALS_T expr + expr ::= expr * GT expr + expr ::= expr * GTE expr + expr ::= expr * LT expr + expr ::= expr * LTE expr + expr ::= expr * CONCAT expr + cexpr ::= expr * CONTAINS expr + cexpr ::= expr * CONTAINS_EITHER expr OR expr + cexpr ::= expr * CONTAINS_NEITHER expr NOR expr + cexpr ::= expr * CONTAINS_BOTH expr AND expr + cexpr ::= expr * IS_BETWEEN expr AND expr + cexpr ::= expr * IS_NOT_BETWEEN expr AND expr + cexpr ::= expr * IS_EITHER expr OR expr + cexpr ::= expr * IS_NEITHER expr NOR expr + cexpr ::= expr * IS_IN expr + cexpr ::= expr * IS_NOT_IN expr + cexpr ::= expr * IS_EITHER_IN expr OR expr + cexpr ::= expr * IS_NEITHER_IN expr NOR expr + cexpr ::= expr * IS_BOTH_IN expr AND expr + (41) expr ::= variable ASSIGN expr * + + IS_EITHER_IN shift 38 + IS_EITHER_IN reduce 41 ** Parsing conflict ** + IS_NEITHER_IN shift 33 + IS_NEITHER_IN reduce 41 ** Parsing conflict ** + IS_BOTH_IN shift 34 + IS_BOTH_IN reduce 41 ** Parsing conflict ** + {default} reduce 41 + +State 128: + single_container_call ::= DOT * IDENTIFIER + single_container_call ::= DOT * NUMBER + single_container_call ::= DOT * L_BRACKET expr R_BRACKET + + L_BRACKET shift 29 + IDENTIFIER shift 204 + NUMBER shift 202 + +State 129: + (51) variable ::= simple_variable * + object_field_call ::= simple_variable * OBJECT_OPERATOR IDENTIFIER + method_call ::= simple_variable * OBJECT_OPERATOR functional + array_call ::= simple_variable * LSQ_BRACKET expr RSQ_BRACKET + + LSQ_BRACKET shift 25 + OBJECT_OPERATOR shift 67 + {default} reduce 51 + +State 130: + (63) string ::= IDENTIFIER * + object_field_call ::= IDENTIFIER * OBJECT_OPERATOR IDENTIFIER + method_call ::= IDENTIFIER * OBJECT_OPERATOR functional + functional ::= IDENTIFIER * L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER * L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER * L_BRACKET R_BRACKET + + L_BRACKET shift 1 + OBJECT_OPERATOR shift 66 + {default} reduce 63 + +State 131: + (52) variable ::= object_field_call * + object_field_call ::= object_field_call * OBJECT_OPERATOR IDENTIFIER + method_call ::= object_field_call * OBJECT_OPERATOR functional + array_call ::= object_field_call * LSQ_BRACKET expr RSQ_BRACKET + + LSQ_BRACKET shift 23 + OBJECT_OPERATOR shift 69 + {default} reduce 52 + +State 132: + object_field_call ::= IDENTIFIER * OBJECT_OPERATOR IDENTIFIER + method_call ::= IDENTIFIER * OBJECT_OPERATOR functional + functional ::= IDENTIFIER * L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER * L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER * L_BRACKET R_BRACKET + + L_BRACKET shift 1 + OBJECT_OPERATOR shift 66 + +State 133: + (53) variable ::= array_call * + object_field_call ::= array_call * OBJECT_OPERATOR IDENTIFIER + method_call ::= array_call * OBJECT_OPERATOR functional + array_call ::= array_call * LSQ_BRACKET expr RSQ_BRACKET + + LSQ_BRACKET shift 27 + OBJECT_OPERATOR shift 64 + {default} reduce 53 + +State 134: + (76) script_variable ::= DOLLAR IDENTIFIER * + language_variable ::= DOLLAR IDENTIFIER * AT IDENTIFIER + + AT shift 136 + {default} reduce 76 + +State 135: + script_variable ::= DOLLAR * IDENTIFIER + language_variable ::= DOLLAR * IDENTIFIER AT IDENTIFIER + + IDENTIFIER shift 134 + +State 136: + language_variable ::= DOLLAR IDENTIFIER AT * IDENTIFIER + + IDENTIFIER shift 184 + +State 137: + template_variable ::= AT * IDENTIFIER + + IDENTIFIER shift 192 + +State 138: + object_field_call ::= method_call * OBJECT_OPERATOR IDENTIFIER + method_call ::= method_call * OBJECT_OPERATOR functional + (102) calculated ::= method_call * + + OBJECT_OPERATOR shift 68 + {default} reduce 102 + +State 139: + (72) container_def ::= single_container_def * + container_def ::= single_container_def * COMMA container_def + + COMMA shift 3 + {default} reduce 72 + +State 140: + object_field_call ::= method_call * OBJECT_OPERATOR IDENTIFIER + method_call ::= method_call * OBJECT_OPERATOR functional + + OBJECT_OPERATOR shift 68 + +State 141: + script_variable ::= DOLLAR * IDENTIFIER + + IDENTIFIER shift 156 + +State 142: + object_field_call ::= function_call * OBJECT_OPERATOR IDENTIFIER + method_call ::= function_call * OBJECT_OPERATOR functional + + OBJECT_OPERATOR shift 65 + +State 143: + functional ::= IDENTIFIER L_BRACKET container_def * R_BRACKET + + R_BRACKET shift 167 + +State 144: + functional ::= IDENTIFIER L_BRACKET argument_list * R_BRACKET + + R_BRACKET shift 176 + +State 145: + container_creator ::= LSQ_BRACKET container_def * RSQ_BRACKET + + RSQ_BRACKET shift 163 + +State 146: + object_creator ::= NEW IDENTIFIER L_BRACKET argument_list * R_BRACKET + + R_BRACKET shift 205 + +State 147: + object_field_call ::= function_call * OBJECT_OPERATOR IDENTIFIER + method_call ::= function_call * OBJECT_OPERATOR functional + (101) calculated ::= function_call * + + OBJECT_OPERATOR shift 65 + {default} reduce 101 + +State 148: + (91) object_field_call ::= function_call OBJECT_OPERATOR IDENTIFIER * + functional ::= IDENTIFIER * L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER * L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER * L_BRACKET R_BRACKET + + L_BRACKET shift 1 + {default} reduce 91 + +State 149: + object_creator ::= NEW * IDENTIFIER + object_creator ::= NEW * IDENTIFIER L_BRACKET argument_list R_BRACKET + + IDENTIFIER shift 150 + +State 150: + (107) object_creator ::= NEW IDENTIFIER * + object_creator ::= NEW IDENTIFIER * L_BRACKET argument_list R_BRACKET + + L_BRACKET shift 5 + {default} reduce 107 + +State 151: + (90) object_field_call ::= method_call OBJECT_OPERATOR IDENTIFIER * + functional ::= IDENTIFIER * L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER * L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER * L_BRACKET R_BRACKET + + L_BRACKET shift 1 + {default} reduce 90 + +State 152: + (86) object_field_call ::= simple_variable OBJECT_OPERATOR IDENTIFIER * + functional ::= IDENTIFIER * L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER * L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER * L_BRACKET R_BRACKET + + L_BRACKET shift 1 + {default} reduce 86 + +State 153: + (87) object_field_call ::= IDENTIFIER OBJECT_OPERATOR IDENTIFIER * + functional ::= IDENTIFIER * L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER * L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER * L_BRACKET R_BRACKET + + L_BRACKET shift 1 + {default} reduce 87 + +State 154: + (89) object_field_call ::= array_call OBJECT_OPERATOR IDENTIFIER * + functional ::= IDENTIFIER * L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER * L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER * L_BRACKET R_BRACKET + + L_BRACKET shift 1 + {default} reduce 89 + +State 155: + (88) object_field_call ::= object_field_call OBJECT_OPERATOR IDENTIFIER * + functional ::= IDENTIFIER * L_BRACKET container_def R_BRACKET + functional ::= IDENTIFIER * L_BRACKET argument_list R_BRACKET + functional ::= IDENTIFIER * L_BRACKET R_BRACKET + + L_BRACKET shift 1 + {default} reduce 88 + +State 156: + (76) script_variable ::= DOLLAR IDENTIFIER * + + {default} reduce 76 + +State 157: + (100) array_call ::= object_field_call LSQ_BRACKET expr RSQ_BRACKET * + + {default} reduce 100 + +State 158: + (94) method_call ::= object_field_call OBJECT_OPERATOR functional * + + {default} reduce 94 + +State 159: + (69) argument_list ::= expr COMMA argument_list * + + {default} reduce 69 + +State 160: + (46) expr ::= static_value * + + {default} reduce 46 + +State 161: + (47) expr ::= calculated * + + {default} reduce 47 + +State 162: + (49) expr ::= container_creator * + + {default} reduce 49 + +State 163: + (71) container_creator ::= LSQ_BRACKET container_def RSQ_BRACKET * + + {default} reduce 71 + +State 164: + (48) expr ::= language_variable * + + {default} reduce 48 + +State 165: + (40) expr ::= DECREMENT variable * + + {default} reduce 40 + +State 166: + (73) container_def ::= single_container_def COMMA container_def * + + {default} reduce 73 + +State 167: + (104) functional ::= IDENTIFIER L_BRACKET container_def R_BRACKET * + + {default} reduce 104 + +State 168: + (36) expr ::= cexpr * + + {default} reduce 36 + +State 169: + (98) array_call ::= simple_variable LSQ_BRACKET expr RSQ_BRACKET * + + {default} reduce 98 + +State 170: + (35) expr ::= L_BRACKET expr R_BRACKET * + + {default} reduce 35 + +State 171: + (43) expr ::= variable EXISTS * + + {default} reduce 43 + +State 172: + (64) number ::= NUMBER * + (65) number ::= MINUS NUMBER * + + $ reduce 65 ** Parsing conflict ** + AND reduce 65 ** Parsing conflict ** + OR reduce 65 ** Parsing conflict ** + XOR reduce 65 ** Parsing conflict ** + EQUALS reduce 65 ** Parsing conflict ** + EQUALS_T reduce 65 ** Parsing conflict ** + NEQUALS reduce 65 ** Parsing conflict ** + NEQUALS_T reduce 65 ** Parsing conflict ** + GT reduce 65 ** Parsing conflict ** + GTE reduce 65 ** Parsing conflict ** + LT reduce 65 ** Parsing conflict ** + LTE reduce 65 ** Parsing conflict ** + IS_BETWEEN reduce 65 ** Parsing conflict ** + IS_NOT_BETWEEN reduce 65 ** Parsing conflict ** + IS_EITHER reduce 65 ** Parsing conflict ** + IS_NEITHER reduce 65 ** Parsing conflict ** + CONTAINS reduce 65 ** Parsing conflict ** + CONTAINS_EITHER reduce 65 ** Parsing conflict ** + CONTAINS_NEITHER reduce 65 ** Parsing conflict ** + CONTAINS_BOTH reduce 65 ** Parsing conflict ** + IS_IN reduce 65 ** Parsing conflict ** + IS_NOT_IN reduce 65 ** Parsing conflict ** + ADD reduce 65 ** Parsing conflict ** + SUB reduce 65 ** Parsing conflict ** + MINUS reduce 65 ** Parsing conflict ** + CONCAT reduce 65 ** Parsing conflict ** + MUL reduce 65 ** Parsing conflict ** + DIV reduce 65 ** Parsing conflict ** + MOD reduce 65 ** Parsing conflict ** + COLON reduce 65 ** Parsing conflict ** + EXP reduce 65 ** Parsing conflict ** + NOR reduce 65 ** Parsing conflict ** + IS_EITHER_IN reduce 65 ** Parsing conflict ** + IS_NEITHER_IN reduce 65 ** Parsing conflict ** + IS_BOTH_IN reduce 65 ** Parsing conflict ** + R_BRACKET reduce 65 ** Parsing conflict ** + COMMA reduce 65 ** Parsing conflict ** + RSQ_BRACKET reduce 65 ** Parsing conflict ** + {default} reduce 64 + +State 173: + (37) expr ::= variable INCREMENT * + + {default} reduce 37 + +State 174: + (39) expr ::= variable DECREMENT * + + {default} reduce 39 + +State 175: + (38) expr ::= INCREMENT variable * + + {default} reduce 38 + +State 176: + (105) functional ::= IDENTIFIER L_BRACKET argument_list R_BRACKET * + + {default} reduce 105 + +State 177: + (106) functional ::= IDENTIFIER L_BRACKET R_BRACKET * + + {default} reduce 106 + +State 178: + (92) method_call ::= simple_variable OBJECT_OPERATOR functional * + + {default} reduce 92 + +State 179: + (70) container_creator ::= LSQ_BRACKET RSQ_BRACKET * + + {default} reduce 70 + +State 180: + (50) expr ::= object_creator * + + {default} reduce 50 + +State 181: + (58) static_value ::= string * + + {default} reduce 58 + +State 182: + (59) static_value ::= BACKTICK_STRING * + + {default} reduce 59 + +State 183: + (57) static_value ::= number * + + {default} reduce 57 + +State 184: + (78) language_variable ::= DOLLAR IDENTIFIER AT IDENTIFIER * + + {default} reduce 78 + +State 185: + (56) simple_variable ::= container * + + {default} reduce 56 + +State 186: + (60) static_value ::= boolean * + + {default} reduce 60 + +State 187: + (61) static_value ::= NULL * + + {default} reduce 61 + +State 188: + (64) number ::= NUMBER * + + {default} reduce 64 + +State 189: + (66) boolean ::= TRUE * + + {default} reduce 66 + +State 190: + (67) boolean ::= FALSE * + + {default} reduce 67 + +State 191: + (62) string ::= STRING * + + {default} reduce 62 + +State 192: + (77) template_variable ::= AT IDENTIFIER * + + {default} reduce 77 + +State 193: + (80) container ::= template_variable container_call * + + {default} reduce 80 + +State 194: + (103) function_call ::= functional * + + {default} reduce 103 + +State 195: + (97) method_call ::= function_call OBJECT_OPERATOR functional * + + {default} reduce 97 + +State 196: + (99) array_call ::= array_call LSQ_BRACKET expr RSQ_BRACKET * + + {default} reduce 99 + +State 197: + (95) method_call ::= array_call OBJECT_OPERATOR functional * + + {default} reduce 95 + +State 198: + (93) method_call ::= IDENTIFIER OBJECT_OPERATOR functional * + + {default} reduce 93 + +State 199: + (79) container ::= script_variable container_call * + + {default} reduce 79 + +State 200: + (82) container_call ::= single_container_call container_call * + + {default} reduce 82 + +State 201: + (85) single_container_call ::= DOT L_BRACKET expr R_BRACKET * + + {default} reduce 85 + +State 202: + (84) single_container_call ::= DOT NUMBER * + + {default} reduce 84 + +State 203: + (96) method_call ::= method_call OBJECT_OPERATOR functional * + + {default} reduce 96 + +State 204: + (83) single_container_call ::= DOT IDENTIFIER * + + {default} reduce 83 + +State 205: + (108) object_creator ::= NEW IDENTIFIER L_BRACKET argument_list R_BRACKET * + + {default} reduce 108 + diff --git a/tools/lexer/expression_parser.php b/tools/lexer/expression_parser.php new file mode 100644 index 0000000..4aed70b --- /dev/null +++ b/tools/lexer/expression_parser.php @@ -0,0 +1,2149 @@ +string = $s->string; + $this->metadata = $s->metadata; + } else { + $this->string = (string) $s; + if ($m instanceof Opt_Expression_Standard_yyToken) { + $this->metadata = $m->metadata; + } elseif (is_array($m)) { + $this->metadata = $m; + } + } + } + + function __toString() + { + return $this->_string; + } + + function offsetExists($offset) + { + return isset($this->metadata[$offset]); + } + + function offsetGet($offset) + { + return $this->metadata[$offset]; + } + + function offsetSet($offset, $value) + { + if ($offset === null) { + if (isset($value[0])) { + $x = ($value instanceof Opt_Expression_Standard_yyToken) ? + $value->metadata : $value; + $this->metadata = array_merge($this->metadata, $x); + return; + } + $offset = count($this->metadata); + } + if ($value === null) { + return; + } + if ($value instanceof Opt_Expression_Standard_yyToken) { + if ($value->metadata) { + $this->metadata[$offset] = $value->metadata; + } + } elseif ($value) { + $this->metadata[$offset] = $value; + } + } + + function offsetUnset($offset) + { + unset($this->metadata[$offset]); + } +} + +class Opt_Expression_Standard_yyStackEntry +{ + public $stateno; /* The state-number */ + public $major; /* The major token value. This is the code + ** number for the token at this stack level */ + public $minor; /* The user-supplied minor token value. This + ** is the value of the token */ +}; + + +#line 3 "expression_parser.y" +class Opt_Expression_Standard_Parser#line 79 "expression_parser.php" +{ +#line 6 "expression_parser.y" + + /** + * The expression engine object. + * @var Opt_Expression_Standard + */ + private $_expr; + + /** + * Constructs the expression parser. + * + * @param Opt_Expression_Standard $expr The expression engine used for parsing. + */ + public function __construct(Opt_Expression_Standard $expr) + { + $this->_expr = $expr; + } // end __construct(); +#line 99 "expression_parser.php" + + const T_AND = 1; + const T_OR = 2; + const T_XOR = 3; + const T_EQUALS = 4; + const T_EQUALS_T = 5; + const T_NEQUALS = 6; + const T_NEQUALS_T = 7; + const T_GT = 8; + const T_GTE = 9; + const T_LT = 10; + const T_LTE = 11; + const T_IS_BETWEEN = 12; + const T_IS_NOT_BETWEEN = 13; + const T_IS_EITHER = 14; + const T_IS_NEITHER = 15; + const T_CONTAINS = 16; + const T_CONTAINS_EITHER = 17; + const T_CONTAINS_NEITHER = 18; + const T_CONTAINS_BOTH = 19; + const T_IS_IN = 20; + const T_IS_NOT_IN = 21; + const T_IS_IN_EITHER = 22; + const T_IS_IN_NEITHER = 23; + const T_IS_IN_BOTH = 24; + const T_ADD = 25; + const T_SUB = 26; + const T_MINUS = 27; + const T_CONCAT = 28; + const T_MUL = 29; + const T_DIV = 30; + const T_MOD = 31; + const T_COLON = 32; + const T_EXP = 33; + const T_NOT = 34; + const T_ASSIGN = 35; + const T_INCREMENT = 36; + const T_DECREMENT = 37; + const T_NOR = 38; + const T_IS_EITHER_IN = 39; + const T_IS_NEITHER_IN = 40; + const T_IS_BOTH_IN = 41; + const T_L_BRACKET = 42; + const T_R_BRACKET = 43; + const T_IS = 44; + const T_EXISTS = 45; + const T_CLONE = 46; + const T_BACKTICK_STRING = 47; + const T_NULL = 48; + const T_STRING = 49; + const T_IDENTIFIER = 50; + const T_NUMBER = 51; + const T_TRUE = 52; + const T_FALSE = 53; + const T_COMMA = 54; + const T_LSQ_BRACKET = 55; + const T_RSQ_BRACKET = 56; + const T_DOLLAR = 57; + const T_AT = 58; + const T_DOT = 59; + const T_OBJECT_OPERATOR = 60; + const T_NEW = 61; + const YY_NO_ACTION = 317; + const YY_ACCEPT_ACTION = 316; + const YY_ERROR_ACTION = 315; + + const YY_SZ_ACTTAB = 2871; +static public $yy_action = array( + /* 0 */ 51, 48, 49, 50, 47, 41, 40, 54, 53, 56, + /* 10 */ 57, 19, 10, 8, 11, 32, 16, 14, 18, 6, + /* 20 */ 20, 38, 33, 34, 58, 44, 45, 55, 42, 46, + /* 30 */ 52, 28, 43, 42, 46, 52, 1, 43, 38, 33, + /* 40 */ 34, 43, 29, 38, 33, 34, 192, 38, 33, 34, + /* 50 */ 204, 202, 3, 4, 66, 51, 48, 49, 50, 47, + /* 60 */ 41, 40, 54, 53, 56, 57, 19, 10, 8, 11, + /* 70 */ 32, 16, 14, 18, 6, 20, 200, 63, 68, 58, + /* 80 */ 44, 45, 55, 42, 46, 52, 25, 43, 156, 199, + /* 90 */ 63, 67, 132, 38, 33, 34, 24, 173, 174, 141, + /* 100 */ 137, 193, 63, 23, 27, 30, 171, 176, 69, 64, + /* 110 */ 196, 167, 51, 48, 49, 50, 47, 41, 40, 54, + /* 120 */ 53, 56, 57, 19, 10, 8, 11, 32, 16, 14, + /* 130 */ 18, 6, 20, 134, 65, 136, 58, 44, 45, 55, + /* 140 */ 42, 46, 52, 184, 43, 197, 152, 178, 1, 155, + /* 150 */ 38, 33, 34, 198, 170, 158, 51, 48, 49, 50, + /* 160 */ 47, 41, 40, 54, 53, 56, 57, 19, 10, 8, + /* 170 */ 11, 32, 16, 14, 18, 6, 20, 203, 151, 153, + /* 180 */ 58, 44, 45, 55, 42, 46, 52, 5, 43, 128, + /* 190 */ 205, 163, 154, 17, 38, 33, 34, 51, 48, 49, + /* 200 */ 50, 47, 41, 40, 54, 53, 56, 57, 19, 10, + /* 210 */ 8, 11, 32, 16, 14, 18, 6, 20, 148, 195, + /* 220 */ 150, 58, 44, 45, 55, 42, 46, 52, 200, 43, + /* 230 */ 200, 200, 200, 200, 200, 38, 33, 34, 200, 200, + /* 240 */ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + /* 250 */ 4, 200, 51, 48, 49, 50, 47, 41, 40, 54, + /* 260 */ 53, 56, 57, 19, 10, 8, 11, 32, 16, 14, + /* 270 */ 18, 6, 20, 200, 200, 200, 58, 44, 45, 55, + /* 280 */ 42, 46, 52, 200, 43, 200, 200, 200, 200, 200, + /* 290 */ 38, 33, 34, 200, 201, 200, 51, 48, 49, 50, + /* 300 */ 47, 41, 40, 54, 53, 56, 57, 19, 10, 8, + /* 310 */ 11, 32, 16, 14, 18, 6, 20, 200, 200, 200, + /* 320 */ 58, 44, 45, 55, 42, 46, 52, 28, 43, 200, + /* 330 */ 200, 200, 200, 200, 38, 33, 34, 51, 48, 49, + /* 340 */ 50, 47, 41, 40, 54, 53, 56, 57, 19, 10, + /* 350 */ 8, 11, 32, 16, 14, 18, 6, 20, 200, 200, + /* 360 */ 200, 58, 44, 45, 55, 42, 46, 52, 200, 43, + /* 370 */ 200, 200, 200, 200, 22, 38, 33, 34, 51, 48, + /* 380 */ 49, 50, 47, 41, 40, 54, 53, 56, 57, 19, + /* 390 */ 10, 8, 11, 32, 16, 14, 18, 6, 20, 200, + /* 400 */ 200, 200, 58, 44, 45, 55, 42, 46, 52, 200, + /* 410 */ 43, 200, 200, 200, 200, 12, 38, 33, 34, 51, + /* 420 */ 48, 49, 50, 47, 41, 40, 54, 53, 56, 57, + /* 430 */ 19, 10, 8, 11, 32, 16, 14, 18, 6, 20, + /* 440 */ 200, 200, 200, 58, 44, 45, 55, 42, 46, 52, + /* 450 */ 200, 43, 200, 200, 200, 200, 200, 38, 33, 34, + /* 460 */ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + /* 470 */ 200, 200, 200, 200, 157, 200, 51, 48, 49, 50, + /* 480 */ 47, 41, 40, 54, 53, 56, 57, 19, 10, 8, + /* 490 */ 11, 32, 16, 14, 18, 6, 20, 200, 200, 200, + /* 500 */ 58, 44, 45, 55, 42, 46, 52, 200, 43, 200, + /* 510 */ 200, 200, 200, 200, 38, 33, 34, 200, 200, 200, + /* 520 */ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + /* 530 */ 200, 169, 200, 51, 15, 49, 50, 47, 41, 40, + /* 540 */ 54, 53, 56, 57, 19, 10, 8, 11, 32, 16, + /* 550 */ 14, 18, 6, 20, 200, 200, 200, 58, 44, 45, + /* 560 */ 55, 42, 46, 52, 200, 43, 200, 200, 200, 200, + /* 570 */ 200, 38, 33, 34, 51, 48, 49, 50, 47, 41, + /* 580 */ 40, 54, 53, 56, 57, 19, 10, 8, 11, 32, + /* 590 */ 16, 14, 18, 6, 20, 200, 200, 200, 58, 44, + /* 600 */ 45, 55, 42, 46, 52, 200, 43, 200, 200, 200, + /* 610 */ 200, 200, 38, 33, 34, 13, 48, 49, 50, 47, + /* 620 */ 41, 40, 54, 53, 56, 57, 19, 10, 8, 11, + /* 630 */ 32, 16, 14, 18, 6, 20, 200, 200, 200, 58, + /* 640 */ 44, 45, 55, 42, 46, 52, 200, 43, 200, 200, + /* 650 */ 200, 200, 200, 38, 33, 34, 21, 48, 49, 50, + /* 660 */ 47, 41, 40, 54, 53, 56, 57, 19, 10, 8, + /* 670 */ 11, 32, 16, 14, 18, 6, 20, 200, 200, 200, + /* 680 */ 58, 44, 45, 55, 42, 46, 52, 200, 43, 200, + /* 690 */ 200, 200, 200, 200, 38, 33, 34, 214, 214, 49, + /* 700 */ 50, 47, 41, 40, 54, 53, 56, 57, 19, 10, + /* 710 */ 8, 11, 32, 16, 14, 18, 6, 20, 200, 200, + /* 720 */ 200, 58, 44, 45, 55, 42, 46, 52, 200, 43, + /* 730 */ 200, 200, 200, 200, 200, 38, 33, 34, 51, 9, + /* 740 */ 49, 50, 47, 41, 40, 54, 53, 56, 57, 19, + /* 750 */ 10, 8, 11, 32, 16, 14, 18, 6, 20, 200, + /* 760 */ 200, 200, 58, 44, 45, 55, 42, 46, 52, 200, + /* 770 */ 43, 200, 200, 200, 200, 200, 38, 33, 34, 7, + /* 780 */ 48, 49, 50, 47, 41, 40, 54, 53, 56, 57, + /* 790 */ 19, 10, 8, 11, 32, 16, 14, 18, 6, 20, + /* 800 */ 200, 200, 200, 58, 44, 45, 55, 42, 46, 52, + /* 810 */ 200, 43, 200, 200, 200, 200, 200, 38, 33, 34, + /* 820 */ 51, 39, 49, 50, 47, 41, 40, 54, 53, 56, + /* 830 */ 57, 19, 10, 8, 11, 32, 16, 14, 18, 6, + /* 840 */ 20, 200, 200, 200, 58, 44, 45, 55, 42, 46, + /* 850 */ 52, 200, 43, 200, 200, 200, 200, 200, 38, 33, + /* 860 */ 34, 35, 48, 49, 50, 47, 41, 40, 54, 53, + /* 870 */ 56, 57, 19, 10, 8, 11, 32, 16, 14, 18, + /* 880 */ 6, 20, 200, 200, 200, 58, 44, 45, 55, 42, + /* 890 */ 46, 52, 200, 43, 200, 200, 200, 200, 200, 38, + /* 900 */ 33, 34, 213, 48, 49, 50, 47, 41, 40, 54, + /* 910 */ 53, 56, 57, 19, 10, 8, 11, 32, 16, 14, + /* 920 */ 18, 6, 20, 200, 200, 200, 58, 44, 45, 55, + /* 930 */ 42, 46, 52, 200, 43, 200, 200, 200, 200, 200, + /* 940 */ 38, 33, 34, 48, 49, 50, 47, 41, 40, 54, + /* 950 */ 53, 56, 57, 19, 10, 8, 11, 32, 16, 14, + /* 960 */ 18, 6, 20, 200, 200, 200, 58, 44, 45, 55, + /* 970 */ 42, 46, 52, 200, 43, 200, 200, 200, 200, 200, + /* 980 */ 38, 33, 34, 200, 49, 50, 47, 41, 40, 54, + /* 990 */ 53, 56, 57, 19, 10, 8, 11, 32, 16, 14, + /* 1000 */ 18, 6, 20, 200, 200, 200, 58, 44, 45, 55, + /* 1010 */ 42, 46, 52, 200, 43, 200, 200, 200, 200, 200, + /* 1020 */ 38, 33, 34, 200, 200, 50, 47, 41, 40, 54, + /* 1030 */ 53, 56, 57, 19, 10, 8, 11, 32, 16, 14, + /* 1040 */ 18, 6, 20, 200, 200, 200, 58, 44, 45, 55, + /* 1050 */ 42, 46, 52, 200, 43, 200, 200, 200, 200, 200, + /* 1060 */ 38, 33, 34, 54, 53, 56, 57, 19, 10, 8, + /* 1070 */ 11, 32, 16, 14, 18, 6, 20, 200, 200, 200, + /* 1080 */ 58, 44, 45, 55, 42, 46, 52, 200, 43, 200, + /* 1090 */ 200, 200, 200, 200, 38, 33, 34, 70, 168, 121, + /* 1100 */ 160, 161, 164, 162, 180, 129, 131, 133, 62, 61, + /* 1110 */ 185, 183, 181, 186, 144, 143, 139, 200, 200, 138, + /* 1120 */ 147, 194, 200, 200, 200, 71, 168, 121, 160, 161, + /* 1130 */ 164, 162, 180, 129, 131, 133, 62, 61, 185, 183, + /* 1140 */ 181, 186, 200, 145, 139, 200, 200, 138, 147, 194, + /* 1150 */ 71, 168, 121, 160, 161, 164, 162, 180, 129, 131, + /* 1160 */ 133, 62, 61, 185, 183, 181, 186, 200, 166, 139, + /* 1170 */ 200, 200, 138, 147, 194, 316, 83, 168, 121, 160, + /* 1180 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1190 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1200 */ 194, 19, 10, 8, 11, 32, 16, 14, 18, 6, + /* 1210 */ 20, 200, 200, 200, 58, 44, 45, 55, 42, 46, + /* 1220 */ 52, 200, 43, 200, 200, 200, 200, 200, 38, 33, + /* 1230 */ 34, 75, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1240 */ 131, 133, 62, 61, 185, 183, 181, 186, 159, 200, + /* 1250 */ 200, 200, 200, 138, 147, 194, 75, 168, 121, 160, + /* 1260 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1270 */ 183, 181, 186, 146, 200, 200, 200, 200, 138, 147, + /* 1280 */ 194, 122, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1290 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1300 */ 200, 200, 200, 138, 147, 194, 98, 168, 121, 160, + /* 1310 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1320 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1330 */ 194, 101, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1340 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1350 */ 200, 200, 200, 138, 147, 194, 117, 168, 121, 160, + /* 1360 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1370 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1380 */ 194, 126, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1390 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1400 */ 200, 200, 200, 138, 147, 194, 92, 168, 121, 160, + /* 1410 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1420 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1430 */ 194, 118, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1440 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1450 */ 200, 200, 200, 138, 147, 194, 94, 168, 121, 160, + /* 1460 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1470 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1480 */ 194, 119, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1490 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1500 */ 200, 200, 200, 138, 147, 194, 125, 168, 121, 160, + /* 1510 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1520 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1530 */ 194, 91, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1540 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1550 */ 200, 200, 200, 138, 147, 194, 81, 168, 121, 160, + /* 1560 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1570 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1580 */ 194, 95, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1590 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1600 */ 200, 200, 200, 138, 147, 194, 103, 168, 121, 160, + /* 1610 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1620 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1630 */ 194, 116, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1640 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1650 */ 200, 200, 200, 138, 147, 194, 102, 168, 121, 160, + /* 1660 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1670 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1680 */ 194, 120, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1690 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1700 */ 200, 200, 200, 138, 147, 194, 72, 168, 121, 160, + /* 1710 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1720 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1730 */ 194, 104, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1740 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1750 */ 200, 200, 200, 138, 147, 194, 105, 168, 121, 160, + /* 1760 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1770 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1780 */ 194, 100, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1790 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1800 */ 200, 200, 200, 138, 147, 194, 96, 168, 121, 160, + /* 1810 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1820 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1830 */ 194, 99, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1840 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1850 */ 200, 200, 200, 138, 147, 194, 124, 168, 121, 160, + /* 1860 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1870 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1880 */ 194, 123, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1890 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1900 */ 200, 200, 200, 138, 147, 194, 97, 168, 121, 160, + /* 1910 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1920 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1930 */ 194, 79, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1940 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 1950 */ 200, 200, 200, 138, 147, 194, 108, 168, 121, 160, + /* 1960 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 1970 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 1980 */ 194, 114, 168, 121, 160, 161, 164, 162, 180, 129, + /* 1990 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2000 */ 200, 200, 200, 138, 147, 194, 106, 168, 121, 160, + /* 2010 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2020 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2030 */ 194, 93, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2040 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2050 */ 200, 200, 200, 138, 147, 194, 74, 168, 121, 160, + /* 2060 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2070 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2080 */ 194, 84, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2090 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2100 */ 200, 200, 200, 138, 147, 194, 78, 168, 121, 160, + /* 2110 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2120 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2130 */ 194, 127, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2140 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2150 */ 200, 200, 200, 138, 147, 194, 82, 168, 121, 160, + /* 2160 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2170 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2180 */ 194, 109, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2190 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2200 */ 200, 200, 200, 138, 147, 194, 111, 168, 121, 160, + /* 2210 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2220 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2230 */ 194, 80, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2240 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2250 */ 200, 200, 200, 138, 147, 194, 86, 168, 121, 160, + /* 2260 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2270 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2280 */ 194, 112, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2290 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2300 */ 200, 200, 200, 138, 147, 194, 88, 168, 121, 160, + /* 2310 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2320 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2330 */ 194, 85, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2340 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2350 */ 200, 200, 200, 138, 147, 194, 90, 168, 121, 160, + /* 2360 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2370 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2380 */ 194, 115, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2390 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2400 */ 200, 200, 200, 138, 147, 194, 110, 168, 121, 160, + /* 2410 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2420 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2430 */ 194, 76, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2440 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2450 */ 200, 200, 200, 138, 147, 194, 107, 168, 121, 160, + /* 2460 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2470 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2480 */ 194, 87, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2490 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2500 */ 200, 200, 200, 138, 147, 194, 73, 168, 121, 160, + /* 2510 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2520 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2530 */ 194, 89, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2540 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2550 */ 200, 200, 200, 138, 147, 194, 113, 168, 121, 160, + /* 2560 */ 161, 164, 162, 180, 129, 131, 133, 62, 61, 185, + /* 2570 */ 183, 181, 186, 200, 200, 200, 200, 200, 138, 147, + /* 2580 */ 194, 77, 168, 121, 160, 161, 164, 162, 180, 129, + /* 2590 */ 131, 133, 62, 61, 185, 183, 181, 186, 200, 200, + /* 2600 */ 200, 200, 200, 138, 147, 194, 8, 11, 32, 16, + /* 2610 */ 14, 18, 6, 20, 200, 200, 200, 58, 44, 45, + /* 2620 */ 55, 42, 46, 52, 200, 43, 200, 200, 200, 200, + /* 2630 */ 200, 38, 33, 34, 36, 200, 200, 200, 200, 200, + /* 2640 */ 200, 37, 200, 59, 60, 200, 200, 200, 200, 31, + /* 2650 */ 200, 200, 200, 26, 182, 187, 191, 130, 188, 189, + /* 2660 */ 190, 200, 2, 179, 135, 137, 200, 200, 149, 36, + /* 2670 */ 200, 200, 200, 200, 200, 200, 37, 200, 59, 60, + /* 2680 */ 200, 200, 200, 200, 31, 177, 200, 200, 26, 182, + /* 2690 */ 187, 191, 130, 188, 189, 190, 200, 2, 200, 135, + /* 2700 */ 137, 200, 200, 149, 36, 200, 200, 200, 200, 200, + /* 2710 */ 200, 37, 200, 59, 60, 200, 200, 200, 200, 31, + /* 2720 */ 200, 200, 200, 26, 182, 187, 191, 130, 188, 189, + /* 2730 */ 190, 200, 2, 200, 135, 137, 200, 200, 149, 200, + /* 2740 */ 32, 16, 14, 18, 6, 20, 200, 200, 200, 58, + /* 2750 */ 44, 45, 55, 42, 46, 52, 200, 43, 200, 200, + /* 2760 */ 36, 200, 200, 38, 33, 34, 200, 37, 200, 59, + /* 2770 */ 60, 200, 200, 200, 200, 31, 200, 200, 200, 26, + /* 2780 */ 182, 187, 191, 130, 172, 189, 190, 200, 2, 200, + /* 2790 */ 135, 137, 200, 200, 149, 200, 6, 20, 200, 200, + /* 2800 */ 200, 58, 44, 45, 55, 42, 46, 52, 200, 43, + /* 2810 */ 200, 200, 200, 200, 200, 38, 33, 34, 200, 200, + /* 2820 */ 58, 44, 45, 55, 42, 46, 52, 200, 43, 200, + /* 2830 */ 200, 175, 200, 200, 38, 33, 34, 129, 131, 133, + /* 2840 */ 62, 61, 185, 200, 200, 200, 200, 200, 165, 200, + /* 2850 */ 200, 140, 142, 194, 129, 131, 133, 62, 61, 185, + /* 2860 */ 200, 200, 200, 200, 200, 200, 200, 200, 140, 142, + /* 2870 */ 194, + ); + static public $yy_lookahead = array( + /* 0 */ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + /* 10 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + /* 20 */ 21, 39, 40, 41, 25, 26, 27, 28, 29, 30, + /* 30 */ 31, 32, 33, 29, 30, 31, 42, 33, 39, 40, + /* 40 */ 41, 33, 42, 39, 40, 41, 50, 39, 40, 41, + /* 50 */ 50, 51, 54, 54, 60, 1, 2, 3, 4, 5, + /* 60 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + /* 70 */ 16, 17, 18, 19, 20, 21, 84, 85, 60, 25, + /* 80 */ 26, 27, 28, 29, 30, 31, 55, 33, 50, 84, + /* 90 */ 85, 60, 50, 39, 40, 41, 35, 36, 37, 57, + /* 100 */ 58, 84, 85, 55, 55, 44, 45, 43, 60, 60, + /* 110 */ 56, 43, 1, 2, 3, 4, 5, 6, 7, 8, + /* 120 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + /* 130 */ 19, 20, 21, 50, 60, 58, 25, 26, 27, 28, + /* 140 */ 29, 30, 31, 50, 33, 88, 50, 88, 42, 50, + /* 150 */ 39, 40, 41, 88, 43, 88, 1, 2, 3, 4, + /* 160 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 170 */ 15, 16, 17, 18, 19, 20, 21, 88, 50, 50, + /* 180 */ 25, 26, 27, 28, 29, 30, 31, 42, 33, 59, + /* 190 */ 43, 56, 50, 38, 39, 40, 41, 1, 2, 3, + /* 200 */ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + /* 210 */ 14, 15, 16, 17, 18, 19, 20, 21, 50, 88, + /* 220 */ 50, 25, 26, 27, 28, 29, 30, 31, 89, 33, + /* 230 */ 89, 89, 89, 89, 89, 39, 40, 41, 89, 89, + /* 240 */ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + /* 250 */ 54, 89, 1, 2, 3, 4, 5, 6, 7, 8, + /* 260 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + /* 270 */ 19, 20, 21, 89, 89, 89, 25, 26, 27, 28, + /* 280 */ 29, 30, 31, 89, 33, 89, 89, 89, 89, 89, + /* 290 */ 39, 40, 41, 89, 43, 89, 1, 2, 3, 4, + /* 300 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 310 */ 15, 16, 17, 18, 19, 20, 21, 89, 89, 89, + /* 320 */ 25, 26, 27, 28, 29, 30, 31, 32, 33, 89, + /* 330 */ 89, 89, 89, 89, 39, 40, 41, 1, 2, 3, + /* 340 */ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + /* 350 */ 14, 15, 16, 17, 18, 19, 20, 21, 89, 89, + /* 360 */ 89, 25, 26, 27, 28, 29, 30, 31, 89, 33, + /* 370 */ 89, 89, 89, 89, 38, 39, 40, 41, 1, 2, + /* 380 */ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + /* 390 */ 13, 14, 15, 16, 17, 18, 19, 20, 21, 89, + /* 400 */ 89, 89, 25, 26, 27, 28, 29, 30, 31, 89, + /* 410 */ 33, 89, 89, 89, 89, 38, 39, 40, 41, 1, + /* 420 */ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + /* 430 */ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + /* 440 */ 89, 89, 89, 25, 26, 27, 28, 29, 30, 31, + /* 450 */ 89, 33, 89, 89, 89, 89, 89, 39, 40, 41, + /* 460 */ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + /* 470 */ 89, 89, 89, 89, 56, 89, 1, 2, 3, 4, + /* 480 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 490 */ 15, 16, 17, 18, 19, 20, 21, 89, 89, 89, + /* 500 */ 25, 26, 27, 28, 29, 30, 31, 89, 33, 89, + /* 510 */ 89, 89, 89, 89, 39, 40, 41, 89, 89, 89, + /* 520 */ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + /* 530 */ 89, 56, 89, 1, 2, 3, 4, 5, 6, 7, + /* 540 */ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + /* 550 */ 18, 19, 20, 21, 89, 89, 89, 25, 26, 27, + /* 560 */ 28, 29, 30, 31, 89, 33, 89, 89, 89, 89, + /* 570 */ 89, 39, 40, 41, 1, 2, 3, 4, 5, 6, + /* 580 */ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + /* 590 */ 17, 18, 19, 20, 21, 89, 89, 89, 25, 26, + /* 600 */ 27, 28, 29, 30, 31, 89, 33, 89, 89, 89, + /* 610 */ 89, 89, 39, 40, 41, 1, 2, 3, 4, 5, + /* 620 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + /* 630 */ 16, 17, 18, 19, 20, 21, 89, 89, 89, 25, + /* 640 */ 26, 27, 28, 29, 30, 31, 89, 33, 89, 89, + /* 650 */ 89, 89, 89, 39, 40, 41, 1, 2, 3, 4, + /* 660 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + /* 670 */ 15, 16, 17, 18, 19, 20, 21, 89, 89, 89, + /* 680 */ 25, 26, 27, 28, 29, 30, 31, 89, 33, 89, + /* 690 */ 89, 89, 89, 89, 39, 40, 41, 1, 2, 3, + /* 700 */ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + /* 710 */ 14, 15, 16, 17, 18, 19, 20, 21, 89, 89, + /* 720 */ 89, 25, 26, 27, 28, 29, 30, 31, 89, 33, + /* 730 */ 89, 89, 89, 89, 89, 39, 40, 41, 1, 2, + /* 740 */ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + /* 750 */ 13, 14, 15, 16, 17, 18, 19, 20, 21, 89, + /* 760 */ 89, 89, 25, 26, 27, 28, 29, 30, 31, 89, + /* 770 */ 33, 89, 89, 89, 89, 89, 39, 40, 41, 1, + /* 780 */ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + /* 790 */ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + /* 800 */ 89, 89, 89, 25, 26, 27, 28, 29, 30, 31, + /* 810 */ 89, 33, 89, 89, 89, 89, 89, 39, 40, 41, + /* 820 */ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + /* 830 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + /* 840 */ 21, 89, 89, 89, 25, 26, 27, 28, 29, 30, + /* 850 */ 31, 89, 33, 89, 89, 89, 89, 89, 39, 40, + /* 860 */ 41, 1, 2, 3, 4, 5, 6, 7, 8, 9, + /* 870 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + /* 880 */ 20, 21, 89, 89, 89, 25, 26, 27, 28, 29, + /* 890 */ 30, 31, 89, 33, 89, 89, 89, 89, 89, 39, + /* 900 */ 40, 41, 1, 2, 3, 4, 5, 6, 7, 8, + /* 910 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + /* 920 */ 19, 20, 21, 89, 89, 89, 25, 26, 27, 28, + /* 930 */ 29, 30, 31, 89, 33, 89, 89, 89, 89, 89, + /* 940 */ 39, 40, 41, 2, 3, 4, 5, 6, 7, 8, + /* 950 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + /* 960 */ 19, 20, 21, 89, 89, 89, 25, 26, 27, 28, + /* 970 */ 29, 30, 31, 89, 33, 89, 89, 89, 89, 89, + /* 980 */ 39, 40, 41, 89, 3, 4, 5, 6, 7, 8, + /* 990 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + /* 1000 */ 19, 20, 21, 89, 89, 89, 25, 26, 27, 28, + /* 1010 */ 29, 30, 31, 89, 33, 89, 89, 89, 89, 89, + /* 1020 */ 39, 40, 41, 89, 89, 4, 5, 6, 7, 8, + /* 1030 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + /* 1040 */ 19, 20, 21, 89, 89, 89, 25, 26, 27, 28, + /* 1050 */ 29, 30, 31, 89, 33, 89, 89, 89, 89, 89, + /* 1060 */ 39, 40, 41, 8, 9, 10, 11, 12, 13, 14, + /* 1070 */ 15, 16, 17, 18, 19, 20, 21, 89, 89, 89, + /* 1080 */ 25, 26, 27, 28, 29, 30, 31, 89, 33, 89, + /* 1090 */ 89, 89, 89, 89, 39, 40, 41, 64, 65, 66, + /* 1100 */ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + /* 1110 */ 77, 78, 79, 80, 81, 82, 83, 89, 89, 86, + /* 1120 */ 87, 88, 89, 89, 89, 64, 65, 66, 67, 68, + /* 1130 */ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + /* 1140 */ 79, 80, 89, 82, 83, 89, 89, 86, 87, 88, + /* 1150 */ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + /* 1160 */ 74, 75, 76, 77, 78, 79, 80, 89, 82, 83, + /* 1170 */ 89, 89, 86, 87, 88, 63, 64, 65, 66, 67, + /* 1180 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1190 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1200 */ 88, 12, 13, 14, 15, 16, 17, 18, 19, 20, + /* 1210 */ 21, 89, 89, 89, 25, 26, 27, 28, 29, 30, + /* 1220 */ 31, 89, 33, 89, 89, 89, 89, 89, 39, 40, + /* 1230 */ 41, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1240 */ 73, 74, 75, 76, 77, 78, 79, 80, 81, 89, + /* 1250 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1260 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1270 */ 78, 79, 80, 81, 89, 89, 89, 89, 86, 87, + /* 1280 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1290 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1300 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1310 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1320 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1330 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1340 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1350 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1360 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1370 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1380 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1390 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1400 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1410 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1420 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1430 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1440 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1450 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1460 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1470 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1480 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1490 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1500 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1510 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1520 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1530 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1540 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1550 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1560 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1570 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1580 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1590 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1600 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1610 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1620 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1630 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1640 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1650 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1660 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1670 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1680 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1690 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1700 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1710 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1720 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1730 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1740 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1750 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1760 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1770 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1780 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1790 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1800 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1810 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1820 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1830 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1840 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1850 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1860 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1870 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1880 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1890 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1900 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1910 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1920 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1930 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1940 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 1950 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 1960 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 1970 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 1980 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 1990 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2000 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2010 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2020 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2030 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2040 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2050 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2060 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2070 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2080 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2090 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2100 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2110 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2120 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2130 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2140 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2150 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2160 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2170 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2180 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2190 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2200 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2210 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2220 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2230 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2240 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2250 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2260 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2270 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2280 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2290 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2300 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2310 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2320 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2330 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2340 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2350 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2360 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2370 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2380 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2390 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2400 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2410 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2420 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2430 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2440 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2450 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2460 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2470 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2480 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2490 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2500 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2510 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2520 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2530 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2540 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2550 */ 89, 89, 89, 86, 87, 88, 64, 65, 66, 67, + /* 2560 */ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + /* 2570 */ 78, 79, 80, 89, 89, 89, 89, 89, 86, 87, + /* 2580 */ 88, 64, 65, 66, 67, 68, 69, 70, 71, 72, + /* 2590 */ 73, 74, 75, 76, 77, 78, 79, 80, 89, 89, + /* 2600 */ 89, 89, 89, 86, 87, 88, 14, 15, 16, 17, + /* 2610 */ 18, 19, 20, 21, 89, 89, 89, 25, 26, 27, + /* 2620 */ 28, 29, 30, 31, 89, 33, 89, 89, 89, 89, + /* 2630 */ 89, 39, 40, 41, 27, 89, 89, 89, 89, 89, + /* 2640 */ 89, 34, 89, 36, 37, 89, 89, 89, 89, 42, + /* 2650 */ 89, 89, 89, 46, 47, 48, 49, 50, 51, 52, + /* 2660 */ 53, 89, 55, 56, 57, 58, 89, 89, 61, 27, + /* 2670 */ 89, 89, 89, 89, 89, 89, 34, 89, 36, 37, + /* 2680 */ 89, 89, 89, 89, 42, 43, 89, 89, 46, 47, + /* 2690 */ 48, 49, 50, 51, 52, 53, 89, 55, 89, 57, + /* 2700 */ 58, 89, 89, 61, 27, 89, 89, 89, 89, 89, + /* 2710 */ 89, 34, 89, 36, 37, 89, 89, 89, 89, 42, + /* 2720 */ 89, 89, 89, 46, 47, 48, 49, 50, 51, 52, + /* 2730 */ 53, 89, 55, 89, 57, 58, 89, 89, 61, 89, + /* 2740 */ 16, 17, 18, 19, 20, 21, 89, 89, 89, 25, + /* 2750 */ 26, 27, 28, 29, 30, 31, 89, 33, 89, 89, + /* 2760 */ 27, 89, 89, 39, 40, 41, 89, 34, 89, 36, + /* 2770 */ 37, 89, 89, 89, 89, 42, 89, 89, 89, 46, + /* 2780 */ 47, 48, 49, 50, 51, 52, 53, 89, 55, 89, + /* 2790 */ 57, 58, 89, 89, 61, 89, 20, 21, 89, 89, + /* 2800 */ 89, 25, 26, 27, 28, 29, 30, 31, 89, 33, + /* 2810 */ 89, 89, 89, 89, 89, 39, 40, 41, 89, 89, + /* 2820 */ 25, 26, 27, 28, 29, 30, 31, 89, 33, 89, + /* 2830 */ 89, 66, 89, 89, 39, 40, 41, 72, 73, 74, + /* 2840 */ 75, 76, 77, 89, 89, 89, 89, 89, 66, 89, + /* 2850 */ 89, 86, 87, 88, 72, 73, 74, 75, 76, 77, + /* 2860 */ 89, 89, 89, 89, 89, 89, 89, 89, 86, 87, + /* 2870 */ 88, +); + const YY_SHIFT_USE_DFLT = -19; + const YY_SHIFT_MAX = 155; + static public $yy_shift_ofst = array( + /* 0 */ 2677, 2642, 2607, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + /* 10 */ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + /* 20 */ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + /* 30 */ 2677, 2677, 2677, 2677, 2677, 2677, 2733, 2677, 2677, 2677, + /* 40 */ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, + /* 50 */ 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 2677, 42, + /* 60 */ 42, 130, 130, 130, 142, 168, 129, 96, 128, 99, + /* 70 */ -1, 295, 336, 251, 418, 196, 54, 111, 475, 155, + /* 80 */ 377, 696, 737, 573, 573, 655, 532, 573, 614, 573, + /* 90 */ 778, 819, 901, 573, 860, 941, 981, 1021, 1055, 1055, + /* 100 */ 1055, 1055, 1189, 1189, 1189, 1189, 2592, 2592, 2724, 2724, + /* 110 */ 2776, 2776, 2776, 2776, 2795, 2795, 4, 4, 4, 4, + /* 120 */ 4, 61, 8, 8, 8, 8, 8, -18, 0, 31, + /* 130 */ -6, 48, -6, 49, 77, 83, 93, -4, 18, -2, + /* 140 */ 18, 38, 74, 68, 64, 135, 147, 74, 106, 170, + /* 150 */ 145, 106, 106, 106, 106, 106, +); + const YY_REDUCE_USE_DFLT = -9; + const YY_REDUCE_MAX = 69; + static public $yy_reduce_ofst = array( + /* 0 */ 1112, 1033, 1061, 1086, 1167, 1192, 1917, 1942, 2092, 2117, + /* 10 */ 2292, 2167, 1892, 2342, 1867, 2217, 2192, 2142, 2242, 2267, + /* 20 */ 2317, 2392, 1967, 1992, 2067, 2042, 2017, 2367, 2417, 2442, + /* 30 */ 2467, 2517, 2492, 1642, 1392, 1342, 1417, 1442, 1467, 1492, + /* 40 */ 1267, 1242, 1217, 1317, 1292, 1367, 1817, 1717, 1742, 1842, + /* 50 */ 1767, 1517, 1792, 1692, 1667, 1567, 1542, 1592, 1617, 2765, + /* 60 */ 2782, 17, 5, -8, 57, 131, 65, 59, 89, 67, +); + static public $yyExpectedTokens = array( + /* 0 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 1 */ array(27, 34, 36, 37, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 2 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 58, 61, ), + /* 3 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 4 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 5 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 6 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 7 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 8 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 9 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 10 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 11 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 12 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 13 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 14 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 15 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 16 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 17 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 18 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 19 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 20 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 21 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 22 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 23 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 24 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 25 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 26 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 27 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 28 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 29 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 30 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 31 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 32 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 33 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 34 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 35 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 36 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 37 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 38 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 39 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 40 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 41 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 42 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 43 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 44 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 45 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 46 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 47 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 48 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 49 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 50 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 51 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 52 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 53 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 54 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 55 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 56 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 57 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 58 */ array(27, 34, 36, 37, 42, 46, 47, 48, 49, 50, 51, 52, 53, 55, 57, 58, 61, ), + /* 59 */ array(50, 57, 58, ), + /* 60 */ array(50, 57, 58, ), + /* 61 */ array(59, ), + /* 62 */ array(59, ), + /* 63 */ array(59, ), + /* 64 */ array(50, ), + /* 65 */ array(50, ), + /* 66 */ array(50, ), + /* 67 */ array(50, ), + /* 68 */ array(50, ), + /* 69 */ array(50, ), + /* 70 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 32, 33, 39, 40, 41, 54, ), + /* 71 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 32, 33, 39, 40, 41, ), + /* 72 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 38, 39, 40, 41, ), + /* 73 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, 43, ), + /* 74 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, 56, ), + /* 75 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, 54, ), + /* 76 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, 56, ), + /* 77 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, 43, ), + /* 78 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, 56, ), + /* 79 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 38, 39, 40, 41, ), + /* 80 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 38, 39, 40, 41, ), + /* 81 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 82 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 83 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 84 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 85 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 86 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 87 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 88 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 89 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 90 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 91 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 92 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 93 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 94 */ array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 95 */ array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 96 */ array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 97 */ array(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 98 */ array(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 99 */ array(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 100 */ array(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 101 */ array(8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 102 */ array(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 103 */ array(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 104 */ array(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 105 */ array(12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 106 */ array(14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 107 */ array(14, 15, 16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 108 */ array(16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 109 */ array(16, 17, 18, 19, 20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 110 */ array(20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 111 */ array(20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 112 */ array(20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 113 */ array(20, 21, 25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 114 */ array(25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 115 */ array(25, 26, 27, 28, 29, 30, 31, 33, 39, 40, 41, ), + /* 116 */ array(29, 30, 31, 33, 39, 40, 41, ), + /* 117 */ array(29, 30, 31, 33, 39, 40, 41, ), + /* 118 */ array(29, 30, 31, 33, 39, 40, 41, ), + /* 119 */ array(29, 30, 31, 33, 39, 40, 41, ), + /* 120 */ array(29, 30, 31, 33, 39, 40, 41, ), + /* 121 */ array(35, 36, 37, 44, 45, ), + /* 122 */ array(33, 39, 40, 41, ), + /* 123 */ array(33, 39, 40, 41, ), + /* 124 */ array(33, 39, 40, 41, ), + /* 125 */ array(33, 39, 40, 41, ), + /* 126 */ array(33, 39, 40, 41, ), + /* 127 */ array(39, 40, 41, ), + /* 128 */ array(42, 50, 51, ), + /* 129 */ array(55, 60, ), + /* 130 */ array(42, 60, ), + /* 131 */ array(55, 60, ), + /* 132 */ array(42, 60, ), + /* 133 */ array(55, 60, ), + /* 134 */ array(58, ), + /* 135 */ array(50, ), + /* 136 */ array(50, ), + /* 137 */ array(50, ), + /* 138 */ array(60, ), + /* 139 */ array(54, ), + /* 140 */ array(60, ), + /* 141 */ array(50, ), + /* 142 */ array(60, ), + /* 143 */ array(43, ), + /* 144 */ array(43, ), + /* 145 */ array(56, ), + /* 146 */ array(43, ), + /* 147 */ array(60, ), + /* 148 */ array(42, ), + /* 149 */ array(50, ), + /* 150 */ array(42, ), + /* 151 */ array(42, ), + /* 152 */ array(42, ), + /* 153 */ array(42, ), + /* 154 */ array(42, ), + /* 155 */ array(42, ), + /* 156 */ array(), + /* 157 */ array(), + /* 158 */ array(), + /* 159 */ array(), + /* 160 */ array(), + /* 161 */ array(), + /* 162 */ array(), + /* 163 */ array(), + /* 164 */ array(), + /* 165 */ array(), + /* 166 */ array(), + /* 167 */ array(), + /* 168 */ array(), + /* 169 */ array(), + /* 170 */ array(), + /* 171 */ array(), + /* 172 */ array(), + /* 173 */ array(), + /* 174 */ array(), + /* 175 */ array(), + /* 176 */ array(), + /* 177 */ array(), + /* 178 */ array(), + /* 179 */ array(), + /* 180 */ array(), + /* 181 */ array(), + /* 182 */ array(), + /* 183 */ array(), + /* 184 */ array(), + /* 185 */ array(), + /* 186 */ array(), + /* 187 */ array(), + /* 188 */ array(), + /* 189 */ array(), + /* 190 */ array(), + /* 191 */ array(), + /* 192 */ array(), + /* 193 */ array(), + /* 194 */ array(), + /* 195 */ array(), + /* 196 */ array(), + /* 197 */ array(), + /* 198 */ array(), + /* 199 */ array(), + /* 200 */ array(), + /* 201 */ array(), + /* 202 */ array(), + /* 203 */ array(), + /* 204 */ array(), + /* 205 */ array(), +); + static public $yy_default = array( + /* 0 */ 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + /* 10 */ 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + /* 20 */ 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + /* 30 */ 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + /* 40 */ 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + /* 50 */ 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, + /* 60 */ 315, 261, 260, 287, 315, 315, 315, 315, 315, 315, + /* 70 */ 274, 281, 315, 315, 315, 274, 315, 315, 315, 315, + /* 80 */ 315, 236, 315, 206, 250, 315, 315, 280, 315, 248, + /* 90 */ 315, 315, 238, 237, 315, 213, 214, 215, 219, 217, + /* 100 */ 218, 220, 224, 223, 221, 222, 231, 230, 233, 232, + /* 110 */ 229, 228, 227, 226, 234, 235, 225, 208, 209, 240, + /* 120 */ 207, 251, 210, 211, 212, 239, 216, 247, 315, 257, + /* 130 */ 269, 258, 315, 259, 282, 315, 315, 315, 308, 278, + /* 140 */ 315, 315, 315, 315, 315, 315, 315, 307, 297, 315, + /* 150 */ 313, 296, 292, 293, 295, 294, 282, 306, 300, 275, + /* 160 */ 252, 253, 255, 277, 254, 246, 279, 310, 242, 304, + /* 170 */ 241, 249, 270, 243, 245, 244, 311, 312, 298, 276, + /* 180 */ 256, 264, 265, 263, 284, 262, 266, 267, 270, 272, + /* 190 */ 273, 268, 283, 286, 309, 303, 305, 301, 299, 285, + /* 200 */ 288, 291, 290, 302, 289, 314, +); + const YYNOCODE = 90; + const YYSTACKDEPTH = 100; + const YYNSTATE = 206; + const YYNRULE = 109; + const YYERRORSYMBOL = 62; + const YYERRSYMDT = 'yy0'; + const YYFALLBACK = 0; + static public $yyFallback = array( + ); + static function Trace($TraceFILE, $zTracePrompt) + { + if (!$TraceFILE) { + $zTracePrompt = 0; + } elseif (!$zTracePrompt) { + $TraceFILE = 0; + } + self::$yyTraceFILE = $TraceFILE; + self::$yyTracePrompt = $zTracePrompt; + } + + static function PrintTrace() + { + self::$yyTraceFILE = fopen('php://output', 'w'); + self::$yyTracePrompt = '
'; + } + + static public $yyTraceFILE; + static public $yyTracePrompt; + public $yyidx; /* Index of top element in stack */ + public $yyerrcnt; /* Shifts left before out of the error */ + public $yystack = array(); /* The parser's stack */ + + public $yyTokenName = array( + '$', 'AND', 'OR', 'XOR', + 'EQUALS', 'EQUALS_T', 'NEQUALS', 'NEQUALS_T', + 'GT', 'GTE', 'LT', 'LTE', + 'IS_BETWEEN', 'IS_NOT_BETWEEN', 'IS_EITHER', 'IS_NEITHER', + 'CONTAINS', 'CONTAINS_EITHER', 'CONTAINS_NEITHER', 'CONTAINS_BOTH', + 'IS_IN', 'IS_NOT_IN', 'IS_IN_EITHER', 'IS_IN_NEITHER', + 'IS_IN_BOTH', 'ADD', 'SUB', 'MINUS', + 'CONCAT', 'MUL', 'DIV', 'MOD', + 'COLON', 'EXP', 'NOT', 'ASSIGN', + 'INCREMENT', 'DECREMENT', 'NOR', 'IS_EITHER_IN', + 'IS_NEITHER_IN', 'IS_BOTH_IN', 'L_BRACKET', 'R_BRACKET', + 'IS', 'EXISTS', 'CLONE', 'BACKTICK_STRING', + 'NULL', 'STRING', 'IDENTIFIER', 'NUMBER', + 'TRUE', 'FALSE', 'COMMA', 'LSQ_BRACKET', + 'RSQ_BRACKET', 'DOLLAR', 'AT', 'DOT', + 'OBJECT_OPERATOR', 'NEW', 'error', 'overall_expr', + 'expr', 'cexpr', 'variable', 'static_value', + 'calculated', 'language_variable', 'container_creator', 'object_creator', + 'simple_variable', 'object_field_call', 'array_call', 'script_variable', + 'template_variable', 'container', 'number', 'string', + 'boolean', 'argument_list', 'container_def', 'single_container_def', + 'container_call', 'single_container_call', 'method_call', 'function_call', + 'functional', + ); + + static public $yyRuleName = array( + /* 0 */ "overall_expr ::= expr", + /* 1 */ "expr ::= expr ADD expr", + /* 2 */ "expr ::= expr SUB expr", + /* 3 */ "expr ::= expr MINUS expr", + /* 4 */ "expr ::= expr MUL expr", + /* 5 */ "expr ::= expr DIV expr", + /* 6 */ "expr ::= expr MOD expr", + /* 7 */ "expr ::= expr AND expr", + /* 8 */ "expr ::= expr OR expr", + /* 9 */ "expr ::= expr XOR expr", + /* 10 */ "expr ::= expr EXP expr", + /* 11 */ "expr ::= expr EQUALS expr", + /* 12 */ "expr ::= expr EQUALS_T expr", + /* 13 */ "expr ::= expr NEQUALS expr", + /* 14 */ "expr ::= expr NEQUALS_T expr", + /* 15 */ "expr ::= expr GT expr", + /* 16 */ "expr ::= expr GTE expr", + /* 17 */ "expr ::= expr LT expr", + /* 18 */ "expr ::= expr LTE expr", + /* 19 */ "expr ::= expr CONCAT expr", + /* 20 */ "cexpr ::= expr CONTAINS expr", + /* 21 */ "cexpr ::= expr CONTAINS_EITHER expr OR expr", + /* 22 */ "cexpr ::= expr CONTAINS_NEITHER expr NOR expr", + /* 23 */ "cexpr ::= expr CONTAINS_BOTH expr AND expr", + /* 24 */ "cexpr ::= expr IS_BETWEEN expr AND expr", + /* 25 */ "cexpr ::= expr IS_NOT_BETWEEN expr AND expr", + /* 26 */ "cexpr ::= expr IS_EITHER expr OR expr", + /* 27 */ "cexpr ::= expr IS_NEITHER expr NOR expr", + /* 28 */ "cexpr ::= expr IS_IN expr", + /* 29 */ "cexpr ::= expr IS_NOT_IN expr", + /* 30 */ "cexpr ::= expr IS_EITHER_IN expr OR expr", + /* 31 */ "cexpr ::= expr IS_NEITHER_IN expr NOR expr", + /* 32 */ "cexpr ::= expr IS_BOTH_IN expr AND expr", + /* 33 */ "expr ::= NOT expr", + /* 34 */ "expr ::= MINUS expr", + /* 35 */ "expr ::= L_BRACKET expr R_BRACKET", + /* 36 */ "expr ::= cexpr", + /* 37 */ "expr ::= variable INCREMENT", + /* 38 */ "expr ::= INCREMENT variable", + /* 39 */ "expr ::= variable DECREMENT", + /* 40 */ "expr ::= DECREMENT variable", + /* 41 */ "expr ::= variable ASSIGN expr", + /* 42 */ "expr ::= variable IS expr", + /* 43 */ "expr ::= variable EXISTS", + /* 44 */ "expr ::= CLONE expr", + /* 45 */ "expr ::= variable", + /* 46 */ "expr ::= static_value", + /* 47 */ "expr ::= calculated", + /* 48 */ "expr ::= language_variable", + /* 49 */ "expr ::= container_creator", + /* 50 */ "expr ::= object_creator", + /* 51 */ "variable ::= simple_variable", + /* 52 */ "variable ::= object_field_call", + /* 53 */ "variable ::= array_call", + /* 54 */ "simple_variable ::= script_variable", + /* 55 */ "simple_variable ::= template_variable", + /* 56 */ "simple_variable ::= container", + /* 57 */ "static_value ::= number", + /* 58 */ "static_value ::= string", + /* 59 */ "static_value ::= BACKTICK_STRING", + /* 60 */ "static_value ::= boolean", + /* 61 */ "static_value ::= NULL", + /* 62 */ "string ::= STRING", + /* 63 */ "string ::= IDENTIFIER", + /* 64 */ "number ::= NUMBER", + /* 65 */ "number ::= MINUS NUMBER", + /* 66 */ "boolean ::= TRUE", + /* 67 */ "boolean ::= FALSE", + /* 68 */ "argument_list ::= expr", + /* 69 */ "argument_list ::= expr COMMA argument_list", + /* 70 */ "container_creator ::= LSQ_BRACKET RSQ_BRACKET", + /* 71 */ "container_creator ::= LSQ_BRACKET container_def RSQ_BRACKET", + /* 72 */ "container_def ::= single_container_def", + /* 73 */ "container_def ::= single_container_def COMMA container_def", + /* 74 */ "single_container_def ::= expr COLON expr", + /* 75 */ "single_container_def ::= expr", + /* 76 */ "script_variable ::= DOLLAR IDENTIFIER", + /* 77 */ "template_variable ::= AT IDENTIFIER", + /* 78 */ "language_variable ::= DOLLAR IDENTIFIER AT IDENTIFIER", + /* 79 */ "container ::= script_variable container_call", + /* 80 */ "container ::= template_variable container_call", + /* 81 */ "container_call ::= single_container_call", + /* 82 */ "container_call ::= single_container_call container_call", + /* 83 */ "single_container_call ::= DOT IDENTIFIER", + /* 84 */ "single_container_call ::= DOT NUMBER", + /* 85 */ "single_container_call ::= DOT L_BRACKET expr R_BRACKET", + /* 86 */ "object_field_call ::= simple_variable OBJECT_OPERATOR IDENTIFIER", + /* 87 */ "object_field_call ::= IDENTIFIER OBJECT_OPERATOR IDENTIFIER", + /* 88 */ "object_field_call ::= object_field_call OBJECT_OPERATOR IDENTIFIER", + /* 89 */ "object_field_call ::= array_call OBJECT_OPERATOR IDENTIFIER", + /* 90 */ "object_field_call ::= method_call OBJECT_OPERATOR IDENTIFIER", + /* 91 */ "object_field_call ::= function_call OBJECT_OPERATOR IDENTIFIER", + /* 92 */ "method_call ::= simple_variable OBJECT_OPERATOR functional", + /* 93 */ "method_call ::= IDENTIFIER OBJECT_OPERATOR functional", + /* 94 */ "method_call ::= object_field_call OBJECT_OPERATOR functional", + /* 95 */ "method_call ::= array_call OBJECT_OPERATOR functional", + /* 96 */ "method_call ::= method_call OBJECT_OPERATOR functional", + /* 97 */ "method_call ::= function_call OBJECT_OPERATOR functional", + /* 98 */ "array_call ::= simple_variable LSQ_BRACKET expr RSQ_BRACKET", + /* 99 */ "array_call ::= array_call LSQ_BRACKET expr RSQ_BRACKET", + /* 100 */ "array_call ::= object_field_call LSQ_BRACKET expr RSQ_BRACKET", + /* 101 */ "calculated ::= function_call", + /* 102 */ "calculated ::= method_call", + /* 103 */ "function_call ::= functional", + /* 104 */ "functional ::= IDENTIFIER L_BRACKET container_def R_BRACKET", + /* 105 */ "functional ::= IDENTIFIER L_BRACKET argument_list R_BRACKET", + /* 106 */ "functional ::= IDENTIFIER L_BRACKET R_BRACKET", + /* 107 */ "object_creator ::= NEW IDENTIFIER", + /* 108 */ "object_creator ::= NEW IDENTIFIER L_BRACKET argument_list R_BRACKET", + ); + + function tokenName($tokenType) + { + if ($tokenType === 0) { + return 'End of Input'; + } + if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) { + return $this->yyTokenName[$tokenType]; + } else { + return "Unknown"; + } + } + + static function yy_destructor($yymajor, $yypminor) + { + switch ($yymajor) { + default: break; /* If no destructor action specified: do nothing */ + } + } + + function yy_pop_parser_stack() + { + if (!count($this->yystack)) { + return; + } + $yytos = array_pop($this->yystack); + if (self::$yyTraceFILE && $this->yyidx >= 0) { + fwrite(self::$yyTraceFILE, + self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] . + "\n"); + } + $yymajor = $yytos->major; + self::yy_destructor($yymajor, $yytos->minor); + $this->yyidx--; + return $yymajor; + } + + function __destruct() + { + while ($this->yyidx >= 0) { + $this->yy_pop_parser_stack(); + } + if (is_resource(self::$yyTraceFILE)) { + fclose(self::$yyTraceFILE); + } + } + + function yy_get_expected_tokens($token) + { + $state = $this->yystack[$this->yyidx]->stateno; + $expected = self::$yyExpectedTokens[$state]; + if (in_array($token, self::$yyExpectedTokens[$state], true)) { + return $expected; + } + $stack = $this->yystack; + $yyidx = $this->yyidx; + do { + $yyact = $this->yy_find_shift_action($token); + if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { + // reduce action + $done = 0; + do { + if ($done++ == 100) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + // too much recursion prevents proper detection + // so give up + return array_unique($expected); + } + $yyruleno = $yyact - self::YYNSTATE; + $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs']; + $nextstate = $this->yy_find_reduce_action( + $this->yystack[$this->yyidx]->stateno, + self::$yyRuleInfo[$yyruleno]['lhs']); + if (isset(self::$yyExpectedTokens[$nextstate])) { + $expected += self::$yyExpectedTokens[$nextstate]; + if (in_array($token, + self::$yyExpectedTokens[$nextstate], true)) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + return array_unique($expected); + } + } + if ($nextstate < self::YYNSTATE) { + // we need to shift a non-terminal + $this->yyidx++; + $x = new Opt_Expression_Standard_yyStackEntry; + $x->stateno = $nextstate; + $x->major = self::$yyRuleInfo[$yyruleno]['lhs']; + $this->yystack[$this->yyidx] = $x; + continue 2; + } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + // the last token was just ignored, we can't accept + // by ignoring input, this is in essence ignoring a + // syntax error! + return array_unique($expected); + } elseif ($nextstate === self::YY_NO_ACTION) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + // input accepted, but not shifted (I guess) + return $expected; + } else { + $yyact = $nextstate; + } + } while (true); + } + break; + } while (true); + return array_unique($expected); + } + + function yy_is_expected_token($token) + { + if ($token === 0) { + return true; // 0 is not part of this + } + $state = $this->yystack[$this->yyidx]->stateno; + if (in_array($token, self::$yyExpectedTokens[$state], true)) { + return true; + } + $stack = $this->yystack; + $yyidx = $this->yyidx; + do { + $yyact = $this->yy_find_shift_action($token); + if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { + // reduce action + $done = 0; + do { + if ($done++ == 100) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + // too much recursion prevents proper detection + // so give up + return true; + } + $yyruleno = $yyact - self::YYNSTATE; + $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs']; + $nextstate = $this->yy_find_reduce_action( + $this->yystack[$this->yyidx]->stateno, + self::$yyRuleInfo[$yyruleno]['lhs']); + if (isset(self::$yyExpectedTokens[$nextstate]) && + in_array($token, self::$yyExpectedTokens[$nextstate], true)) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + return true; + } + if ($nextstate < self::YYNSTATE) { + // we need to shift a non-terminal + $this->yyidx++; + $x = new Opt_Expression_Standard_yyStackEntry; + $x->stateno = $nextstate; + $x->major = self::$yyRuleInfo[$yyruleno]['lhs']; + $this->yystack[$this->yyidx] = $x; + continue 2; + } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + if (!$token) { + // end of input: this is valid + return true; + } + // the last token was just ignored, we can't accept + // by ignoring input, this is in essence ignoring a + // syntax error! + return false; + } elseif ($nextstate === self::YY_NO_ACTION) { + $this->yyidx = $yyidx; + $this->yystack = $stack; + // input accepted, but not shifted (I guess) + return true; + } else { + $yyact = $nextstate; + } + } while (true); + } + break; + } while (true); + $this->yyidx = $yyidx; + $this->yystack = $stack; + return true; + } + + function yy_find_shift_action($iLookAhead) + { + $stateno = $this->yystack[$this->yyidx]->stateno; + + /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */ + if (!isset(self::$yy_shift_ofst[$stateno])) { + // no shift actions + return self::$yy_default[$stateno]; + } + $i = self::$yy_shift_ofst[$stateno]; + if ($i === self::YY_SHIFT_USE_DFLT) { + return self::$yy_default[$stateno]; + } + if ($iLookAhead == self::YYNOCODE) { + return self::YY_NO_ACTION; + } + $i += $iLookAhead; + if ($i < 0 || $i >= self::YY_SZ_ACTTAB || + self::$yy_lookahead[$i] != $iLookAhead) { + if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) + && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) { + if (self::$yyTraceFILE) { + fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " . + $this->yyTokenName[$iLookAhead] . " => " . + $this->yyTokenName[$iFallback] . "\n"); + } + return $this->yy_find_shift_action($iFallback); + } + return self::$yy_default[$stateno]; + } else { + return self::$yy_action[$i]; + } + } + + function yy_find_reduce_action($stateno, $iLookAhead) + { + /* $stateno = $this->yystack[$this->yyidx]->stateno; */ + + if (!isset(self::$yy_reduce_ofst[$stateno])) { + return self::$yy_default[$stateno]; + } + $i = self::$yy_reduce_ofst[$stateno]; + if ($i == self::YY_REDUCE_USE_DFLT) { + return self::$yy_default[$stateno]; + } + if ($iLookAhead == self::YYNOCODE) { + return self::YY_NO_ACTION; + } + $i += $iLookAhead; + if ($i < 0 || $i >= self::YY_SZ_ACTTAB || + self::$yy_lookahead[$i] != $iLookAhead) { + return self::$yy_default[$stateno]; + } else { + return self::$yy_action[$i]; + } + } + + function yy_shift($yyNewState, $yyMajor, $yypMinor) + { + $this->yyidx++; + if ($this->yyidx >= self::YYSTACKDEPTH) { + $this->yyidx--; + if (self::$yyTraceFILE) { + fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt); + } + while ($this->yyidx >= 0) { + $this->yy_pop_parser_stack(); + } + return; + } + $yytos = new Opt_Expression_Standard_yyStackEntry; + $yytos->stateno = $yyNewState; + $yytos->major = $yyMajor; + $yytos->minor = $yypMinor; + array_push($this->yystack, $yytos); + if (self::$yyTraceFILE && $this->yyidx > 0) { + fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt, + $yyNewState); + fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt); + for($i = 1; $i <= $this->yyidx; $i++) { + fprintf(self::$yyTraceFILE, " %s", + $this->yyTokenName[$this->yystack[$i]->major]); + } + fwrite(self::$yyTraceFILE,"\n"); + } + } + + static public $yyRuleInfo = array( + array( 'lhs' => 63, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 65, 'rhs' => 3 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 3 ), + array( 'lhs' => 65, 'rhs' => 3 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 65, 'rhs' => 5 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 3 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 2 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 64, 'rhs' => 1 ), + array( 'lhs' => 66, 'rhs' => 1 ), + array( 'lhs' => 66, 'rhs' => 1 ), + array( 'lhs' => 66, 'rhs' => 1 ), + array( 'lhs' => 72, 'rhs' => 1 ), + array( 'lhs' => 72, 'rhs' => 1 ), + array( 'lhs' => 72, 'rhs' => 1 ), + array( 'lhs' => 67, 'rhs' => 1 ), + array( 'lhs' => 67, 'rhs' => 1 ), + array( 'lhs' => 67, 'rhs' => 1 ), + array( 'lhs' => 67, 'rhs' => 1 ), + array( 'lhs' => 67, 'rhs' => 1 ), + array( 'lhs' => 79, 'rhs' => 1 ), + array( 'lhs' => 79, 'rhs' => 1 ), + array( 'lhs' => 78, 'rhs' => 1 ), + array( 'lhs' => 78, 'rhs' => 2 ), + array( 'lhs' => 80, 'rhs' => 1 ), + array( 'lhs' => 80, 'rhs' => 1 ), + array( 'lhs' => 81, 'rhs' => 1 ), + array( 'lhs' => 81, 'rhs' => 3 ), + array( 'lhs' => 70, 'rhs' => 2 ), + array( 'lhs' => 70, 'rhs' => 3 ), + array( 'lhs' => 82, 'rhs' => 1 ), + array( 'lhs' => 82, 'rhs' => 3 ), + array( 'lhs' => 83, 'rhs' => 3 ), + array( 'lhs' => 83, 'rhs' => 1 ), + array( 'lhs' => 75, 'rhs' => 2 ), + array( 'lhs' => 76, 'rhs' => 2 ), + array( 'lhs' => 69, 'rhs' => 4 ), + array( 'lhs' => 77, 'rhs' => 2 ), + array( 'lhs' => 77, 'rhs' => 2 ), + array( 'lhs' => 84, 'rhs' => 1 ), + array( 'lhs' => 84, 'rhs' => 2 ), + array( 'lhs' => 85, 'rhs' => 2 ), + array( 'lhs' => 85, 'rhs' => 2 ), + array( 'lhs' => 85, 'rhs' => 4 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 73, 'rhs' => 3 ), + array( 'lhs' => 86, 'rhs' => 3 ), + array( 'lhs' => 86, 'rhs' => 3 ), + array( 'lhs' => 86, 'rhs' => 3 ), + array( 'lhs' => 86, 'rhs' => 3 ), + array( 'lhs' => 86, 'rhs' => 3 ), + array( 'lhs' => 86, 'rhs' => 3 ), + array( 'lhs' => 74, 'rhs' => 4 ), + array( 'lhs' => 74, 'rhs' => 4 ), + array( 'lhs' => 74, 'rhs' => 4 ), + array( 'lhs' => 68, 'rhs' => 1 ), + array( 'lhs' => 68, 'rhs' => 1 ), + array( 'lhs' => 87, 'rhs' => 1 ), + array( 'lhs' => 88, 'rhs' => 4 ), + array( 'lhs' => 88, 'rhs' => 4 ), + array( 'lhs' => 88, 'rhs' => 3 ), + array( 'lhs' => 71, 'rhs' => 2 ), + array( 'lhs' => 71, 'rhs' => 5 ), + ); + + static public $yyReduceMap = array( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 2, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => 7, + 8 => 8, + 9 => 9, + 10 => 10, + 11 => 11, + 12 => 12, + 13 => 13, + 14 => 14, + 15 => 15, + 16 => 16, + 17 => 17, + 18 => 18, + 19 => 19, + 20 => 20, + 21 => 21, + 22 => 22, + 23 => 23, + 24 => 24, + 25 => 25, + 26 => 26, + 27 => 27, + 28 => 28, + 29 => 29, + 30 => 30, + 31 => 31, + 32 => 32, + 33 => 33, + 34 => 34, + 35 => 35, + 36 => 36, + 46 => 36, + 47 => 36, + 48 => 36, + 49 => 36, + 50 => 36, + 83 => 36, + 84 => 36, + 101 => 36, + 102 => 36, + 37 => 37, + 38 => 38, + 39 => 39, + 40 => 40, + 41 => 41, + 42 => 41, + 43 => 43, + 44 => 44, + 45 => 45, + 51 => 51, + 52 => 52, + 53 => 52, + 54 => 54, + 55 => 55, + 56 => 55, + 57 => 57, + 58 => 57, + 60 => 57, + 59 => 59, + 61 => 61, + 62 => 62, + 63 => 63, + 64 => 64, + 65 => 65, + 66 => 66, + 67 => 67, + 68 => 68, + 72 => 68, + 81 => 68, + 69 => 69, + 70 => 70, + 71 => 71, + 73 => 73, + 74 => 74, + 75 => 75, + 76 => 76, + 77 => 77, + 78 => 78, + 79 => 79, + 80 => 80, + 82 => 82, + 85 => 85, + 86 => 86, + 87 => 87, + 88 => 88, + 89 => 88, + 90 => 88, + 91 => 88, + 92 => 92, + 93 => 93, + 94 => 94, + 95 => 94, + 96 => 94, + 97 => 94, + 98 => 98, + 99 => 99, + 100 => 99, + 103 => 103, + 104 => 104, + 105 => 105, + 106 => 106, + 107 => 107, + 108 => 108, + ); +#line 49 "expression_parser.y" + function yy_r0(){ $this->_retvalue = $this->_expr->_finalize($this->yystack[$this->yyidx + 0]->minor); } +#line 1676 "expression_parser.php" +#line 50 "expression_parser.y" + function yy_r1(){ $this->_retvalue = $this->_expr->_stdOperator('+', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::MATH_OP_WEIGHT); } +#line 1679 "expression_parser.php" +#line 51 "expression_parser.y" + function yy_r2(){ $this->_retvalue = $this->_expr->_stdOperator('-', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::MATH_OP_WEIGHT); } +#line 1682 "expression_parser.php" +#line 53 "expression_parser.y" + function yy_r4(){ $this->_retvalue = $this->_expr->_stdOperator('*', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::MATH_OP_WEIGHT); } +#line 1685 "expression_parser.php" +#line 54 "expression_parser.y" + function yy_r5(){ $this->_retvalue = $this->_expr->_stdOperator('/', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::MATH_OP_WEIGHT); } +#line 1688 "expression_parser.php" +#line 55 "expression_parser.y" + function yy_r6(){ $this->_retvalue = $this->_expr->_stdOperator('%', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::MATH_OP_WEIGHT); } +#line 1691 "expression_parser.php" +#line 56 "expression_parser.y" + function yy_r7(){ $this->_retvalue = $this->_expr->_stdOperator('&&', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::LOGICAL_OP_WEIGHT); } +#line 1694 "expression_parser.php" +#line 57 "expression_parser.y" + function yy_r8(){ $this->_retvalue = $this->_expr->_stdOperator('||', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::LOGICAL_OP_WEIGHT); } +#line 1697 "expression_parser.php" +#line 58 "expression_parser.y" + function yy_r9(){ $this->_retvalue = $this->_expr->_stdOperator(' xor ', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::LOGICAL_OP_WEIGHT); } +#line 1700 "expression_parser.php" +#line 59 "expression_parser.y" + function yy_r10(){ $this->_retvalue = $this->_expr->_functionalOperator('pow', array( $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::FUNCTIONAL_OP_WEIGHT); } +#line 1703 "expression_parser.php" +#line 60 "expression_parser.y" + function yy_r11(){ $this->_retvalue = $this->_expr->_stdOperator('==', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1706 "expression_parser.php" +#line 61 "expression_parser.y" + function yy_r12(){ $this->_retvalue = $this->_expr->_stdOperator('===', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1709 "expression_parser.php" +#line 62 "expression_parser.y" + function yy_r13(){ $this->_retvalue = $this->_expr->_stdOperator('!=', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1712 "expression_parser.php" +#line 63 "expression_parser.y" + function yy_r14(){ $this->_retvalue = $this->_expr->_stdOperator('!==', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1715 "expression_parser.php" +#line 64 "expression_parser.y" + function yy_r15(){ $this->_retvalue = $this->_expr->_stdOperator('>', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1718 "expression_parser.php" +#line 65 "expression_parser.y" + function yy_r16(){ $this->_retvalue = $this->_expr->_stdOperator('>=', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1721 "expression_parser.php" +#line 66 "expression_parser.y" + function yy_r17(){ $this->_retvalue = $this->_expr->_stdOperator('<', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1724 "expression_parser.php" +#line 67 "expression_parser.y" + function yy_r18(){ $this->_retvalue = $this->_expr->_stdOperator('<=', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1727 "expression_parser.php" +#line 68 "expression_parser.y" + function yy_r19(){ $this->_retvalue = $this->_expr->_stdOperator('.', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::CONCAT_OP_WEIGHT); } +#line 1730 "expression_parser.php" +#line 69 "expression_parser.y" + function yy_r20(){ $this->_retvalue = $this->_expr->_expressionOperator('contains', array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1733 "expression_parser.php" +#line 70 "expression_parser.y" + function yy_r21(){ $this->_retvalue = $this->_expr->_expressionOperator('contains_either', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1736 "expression_parser.php" +#line 71 "expression_parser.y" + function yy_r22(){ $this->_retvalue = $this->_expr->_expressionOperator('contains_neither', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1739 "expression_parser.php" +#line 72 "expression_parser.y" + function yy_r23(){ $this->_retvalue = $this->_expr->_expressionOperator('contains_both', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1742 "expression_parser.php" +#line 73 "expression_parser.y" + function yy_r24(){ $this->_retvalue = $this->_expr->_expressionOperator('between', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), 2 * Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1745 "expression_parser.php" +#line 74 "expression_parser.y" + function yy_r25(){ $this->_retvalue = $this->_expr->_expressionOperator('not_between', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), 2 * Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1748 "expression_parser.php" +#line 75 "expression_parser.y" + function yy_r26(){ $this->_retvalue = $this->_expr->_expressionOperator('either', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), 2 * Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1751 "expression_parser.php" +#line 76 "expression_parser.y" + function yy_r27(){ $this->_retvalue = $this->_expr->_expressionOperator('neither', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), 2 * Opt_Expression_Standard::COMPARE_OP_WEIGHT); } +#line 1754 "expression_parser.php" +#line 77 "expression_parser.y" + function yy_r28(){ $this->_retvalue = $this->_expr->_expressionOperator('is_in', array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1757 "expression_parser.php" +#line 78 "expression_parser.y" + function yy_r29(){ $this->_retvalue = $this->_expr->_expressionOperator('is_not_in', array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1760 "expression_parser.php" +#line 79 "expression_parser.y" + function yy_r30(){ $this->_retvalue = $this->_expr->_expressionOperator('is_either_in', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1763 "expression_parser.php" +#line 80 "expression_parser.y" + function yy_r31(){ $this->_retvalue = $this->_expr->_expressionOperator('is_neither_in', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1766 "expression_parser.php" +#line 81 "expression_parser.y" + function yy_r32(){ $this->_retvalue = $this->_expr->_expressionOperator('is_both_in', array($this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor), Opt_Expression_Standard::DF_OP_WEIGHT); } +#line 1769 "expression_parser.php" +#line 82 "expression_parser.y" + function yy_r33(){ $this->_retvalue = $this->_expr->_unaryOperator('!', $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::LOGICAL_OP_WEIGHT); } +#line 1772 "expression_parser.php" +#line 83 "expression_parser.y" + function yy_r34(){ $this->_retvalue = $this->_expr->_unaryOperator('-', $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::LOGICAL_OP_WEIGHT); } +#line 1775 "expression_parser.php" +#line 84 "expression_parser.y" + function yy_r35(){ $this->_retvalue = $this->_expr->_package('(', $this->yystack[$this->yyidx + -1]->minor, Opt_Expression_Standard::PARENTHESES_WEIGHT); } +#line 1778 "expression_parser.php" +#line 85 "expression_parser.y" + function yy_r36(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 1781 "expression_parser.php" +#line 87 "expression_parser.y" + function yy_r37(){ + if($this->yystack[$this->yyidx + -1]->minor[1] == 0) + { + $this->_retvalue = $this->_expr->_compileVariable($this->yystack[$this->yyidx + -1]->minor[0][0], $this->yystack[$this->yyidx + -1]->minor[0][1],Opt_Expression_Standard::INCDEC_OP_WEIGHT, Opt_Expression_Standard::CONTEXT_POSTDECREMENT, null); + } + else + { + $this->_retvalue = $this->_expr->_compilePhpOperation('postincrement', $this->yystack[$this->yyidx + -1]->minor[0], null, Opt_Expression_Standard::INCDEC_OP_WEIGHT); + } + } +#line 1793 "expression_parser.php" +#line 98 "expression_parser.y" + function yy_r38(){ + if($this->yystack[$this->yyidx + 0]->minor[1] == 0) + { + $this->_retvalue = $this->_expr->_compileVariable($this->yystack[$this->yyidx + 0]->minor[0][0], $this->yystack[$this->yyidx + 0]->minor[0][1],Opt_Expression_Standard::INCDEC_OP_WEIGHT, Opt_Expression_Standard::CONTEXT_PREINCREMENT, null); + } + else + { + $this->_retvalue = $this->_expr->_compilePhpOperation('preincrement', $this->yystack[$this->yyidx + 0]->minor[0], null, Opt_Expression_Standard::INCDEC_OP_WEIGHT); + } + } +#line 1805 "expression_parser.php" +#line 109 "expression_parser.y" + function yy_r39(){ + if($this->yystack[$this->yyidx + -1]->minor[1] == 0) + { + $this->_retvalue = $this->_expr->_compileVariable($this->yystack[$this->yyidx + -1]->minor[0][0], $this->yystack[$this->yyidx + -1]->minor[0][1],Opt_Expression_Standard::INCDEC_OP_WEIGHT, Opt_Expression_Standard::CONTEXT_POSTDECREMENT, null); + } + else + { + $this->_retvalue = $this->_expr->_compilePhpOperation('postdecrement', $this->yystack[$this->yyidx + -1]->minor[0], null, Opt_Expression_Standard::INCDEC_OP_WEIGHT); + } + } +#line 1817 "expression_parser.php" +#line 120 "expression_parser.y" + function yy_r40(){ + if($this->yystack[$this->yyidx + 0]->minor[1] == 0) + { + $this->_retvalue = $this->_expr->_compileVariable($this->yystack[$this->yyidx + 0]->minor[0][0], $this->yystack[$this->yyidx + 0]->minor[0][1],Opt_Expression_Standard::INCDEC_OP_WEIGHT, Opt_Expression_Standard::CONTEXT_PREDECREMENT, null); + } + else + { + $this->_retvalue = $this->_expr->_compilePhpOperation('predecrement', $this->yystack[$this->yyidx + 0]->minor[0], null, Opt_Expression_Standard::INCDEC_OP_WEIGHT); + } + } +#line 1829 "expression_parser.php" +#line 131 "expression_parser.y" + function yy_r41(){ + if($this->yystack[$this->yyidx + -2]->minor[1] == 0) + { + $this->_retvalue = $this->_expr->_compileVariable($this->yystack[$this->yyidx + -2]->minor[0][0], $this->yystack[$this->yyidx + -2]->minor[0][1],Opt_Expression_Standard::ASSIGN_OP_WEIGHT, Opt_Expression_Standard::CONTEXT_ASSIGN, $this->yystack[$this->yyidx + 0]->minor); + } + else + { + $this->_retvalue = $this->_expr->_compilePhpOperation('assign', $this->yystack[$this->yyidx + -2]->minor[0], $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::ASSIGN_OP_WEIGHT); + } + } +#line 1841 "expression_parser.php" +#line 152 "expression_parser.y" + function yy_r43(){ $this->_retvalue = $this->_expr->_compileVariable($this->yystack[$this->yyidx + -1]->minor[0], $this->yystack[$this->yyidx + -1]->minor[1],Opt_Expression_Standard::ASSIGN_OP_WEIGHT, Opt_Expression_Standard::CONTEXT_EXISTS, expr); } +#line 1844 "expression_parser.php" +#line 154 "expression_parser.y" + function yy_r44(){ $this->_retvalue = $this->_expr->_objective('clone', $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::CLONE_WEIGHT); } +#line 1847 "expression_parser.php" +#line 157 "expression_parser.y" + function yy_r45(){ + if($this->yystack[$this->yyidx + 0]->minor[1] == 0) + { + $this->_retvalue = $this->_expr->_compileVariable($this->yystack[$this->yyidx + 0]->minor[0][0], $this->yystack[$this->yyidx + 0]->minor[0][1], 0); + } + else + { + $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor[0]; + } + } +#line 1859 "expression_parser.php" +#line 173 "expression_parser.y" + function yy_r51(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, 0); } +#line 1862 "expression_parser.php" +#line 174 "expression_parser.y" + function yy_r52(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor, 1); } +#line 1865 "expression_parser.php" +#line 177 "expression_parser.y" + function yy_r54(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 1868 "expression_parser.php" +#line 178 "expression_parser.y" + function yy_r55(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 1871 "expression_parser.php" +#line 181 "expression_parser.y" + function yy_r57(){ $this->_retvalue = $this->_expr->_scalarValue($this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::SCALAR_WEIGHT); } +#line 1874 "expression_parser.php" +#line 183 "expression_parser.y" + function yy_r59(){ $this->_retvalue = $this->_expr->_backtick($this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::BACKTICK_WEIGHT); } +#line 1877 "expression_parser.php" +#line 185 "expression_parser.y" + function yy_r61(){ $this->_retvalue = $this->_expr->_scalarValue('null', Opt_Expression_Standard::SCALAR_WEIGHT); } +#line 1880 "expression_parser.php" +#line 187 "expression_parser.y" + function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 1883 "expression_parser.php" +#line 188 "expression_parser.y" + function yy_r63(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; } +#line 1886 "expression_parser.php" +#line 190 "expression_parser.y" + function yy_r64(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 1889 "expression_parser.php" +#line 191 "expression_parser.y" + function yy_r65(){ $this->_retvalue = - $this->yystack[$this->yyidx + 0]->minor; } +#line 1892 "expression_parser.php" +#line 193 "expression_parser.y" + function yy_r66(){ $this->_retvalue = 'true'; } +#line 1895 "expression_parser.php" +#line 194 "expression_parser.y" + function yy_r67(){ $this->_retvalue = 'false'; } +#line 1898 "expression_parser.php" +#line 199 "expression_parser.y" + function yy_r68(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); } +#line 1901 "expression_parser.php" +#line 200 "expression_parser.y" + function yy_r69(){ array_unshift($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -2]->minor); $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 1904 "expression_parser.php" +#line 202 "expression_parser.y" + function yy_r70(){ $this->_retvalue = $this->_expr->_containerValue(null, Opt_Expression_Standard::CONTAINER_WEIGHT); } +#line 1907 "expression_parser.php" +#line 203 "expression_parser.y" + function yy_r71(){ $this->_retvalue = $this->_expr->_containerValue($this->yystack[$this->yyidx + -1]->minor, Opt_Expression_Standard::CONTAINER_WEIGHT); } +#line 1910 "expression_parser.php" +#line 205 "expression_parser.y" + function yy_r73(){ array_unshift($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -2]->minor); $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 1913 "expression_parser.php" +#line 207 "expression_parser.y" + function yy_r74(){ $this->_retvalue = $this->_expr->_pair($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } +#line 1916 "expression_parser.php" +#line 208 "expression_parser.y" + function yy_r75(){ $this->_retvalue = $this->_expr->_pair(null, $this->yystack[$this->yyidx + 0]->minor); } +#line 1919 "expression_parser.php" +#line 210 "expression_parser.y" + function yy_r76(){ $this->_retvalue = $this->_expr->_prepareScriptVar($this->yystack[$this->yyidx + 0]->minor); } +#line 1922 "expression_parser.php" +#line 211 "expression_parser.y" + function yy_r77(){ $this->_retvalue = $this->_expr->_prepareTemplateVar($this->yystack[$this->yyidx + 0]->minor); } +#line 1925 "expression_parser.php" +#line 212 "expression_parser.y" + function yy_r78(){ $this->_retvalue = $this->_expr->_compileLanguageVar($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, Opt_Expression_Standard::LANGUAGE_VARIABLE_WEIGHT); } +#line 1928 "expression_parser.php" +#line 214 "expression_parser.y" + function yy_r79(){ + array_unshift($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor[0][0]); + $this->_retvalue = new SplFixedArray(3); + $this->_retvalue[0] = $this->yystack[$this->yyidx + 0]->minor; + $this->_retvalue[1] = '$'; + } +#line 1936 "expression_parser.php" +#line 221 "expression_parser.y" + function yy_r80(){ + array_unshift($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor[0][0]); + $this->_retvalue = new SplFixedArray(3); + $this->_retvalue[0] = $this->yystack[$this->yyidx + 0]->minor; + $this->_retvalue[1] = '@'; + } +#line 1944 "expression_parser.php" +#line 229 "expression_parser.y" + function yy_r82(){ array_unshift($this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } +#line 1947 "expression_parser.php" +#line 233 "expression_parser.y" + function yy_r85(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } +#line 1950 "expression_parser.php" +#line 235 "expression_parser.y" + function yy_r86(){ $this->_retvalue = $this->_expr->_buildObjectFieldDynamic($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } +#line 1953 "expression_parser.php" +#line 236 "expression_parser.y" + function yy_r87(){ $this->_retvalue = $this->_expr->_buildObjectFieldStatic($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } +#line 1956 "expression_parser.php" +#line 237 "expression_parser.y" + function yy_r88(){ $this->_retvalue = $this->_expr->_buildObjectFieldNext($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } +#line 1959 "expression_parser.php" +#line 242 "expression_parser.y" + function yy_r92(){ $this->_retvalue = $this->_expr->_buildMethodDynamic($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } +#line 1962 "expression_parser.php" +#line 243 "expression_parser.y" + function yy_r93(){ $this->_retvalue = $this->_expr->_buildMethodStatic($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } +#line 1965 "expression_parser.php" +#line 244 "expression_parser.y" + function yy_r94(){ $this->_retvalue = $this->_expr->_buildMethodNext($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } +#line 1968 "expression_parser.php" +#line 249 "expression_parser.y" + function yy_r98(){ $this->_retvalue = $this->_expr->_buildArrayDynamic($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor); } +#line 1971 "expression_parser.php" +#line 250 "expression_parser.y" + function yy_r99(){ $this->_retvalue = $this->_expr->_buildArrayNext($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor); } +#line 1974 "expression_parser.php" +#line 256 "expression_parser.y" + function yy_r103(){ $this->_retvalue = $this->_expr->_makeFunction($this->yystack[$this->yyidx + 0]->minor); } +#line 1977 "expression_parser.php" +#line 258 "expression_parser.y" + function yy_r104(){ $this->_retvalue = $this->_expr->_makeFunctional($this->yystack[$this->yyidx + -3]->minor, array($this->_expr->_containerValue($this->yystack[$this->yyidx + -1]->minor, Opt_Expression_Standard::CONTAINER_WEIGHT))); } +#line 1980 "expression_parser.php" +#line 259 "expression_parser.y" + function yy_r105(){ $this->_retvalue = $this->_expr->_makeFunctional($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor); } +#line 1983 "expression_parser.php" +#line 260 "expression_parser.y" + function yy_r106(){ $this->_retvalue = $this->_expr->_makeFunctional($this->yystack[$this->yyidx + -2]->minor, array()); } +#line 1986 "expression_parser.php" +#line 262 "expression_parser.y" + function yy_r107(){ $this->_retvalue = $this->_expr->_objective('new', array($this->yystack[$this->yyidx + 0]->minor, array()), Opt_Expression_Standard::NEW_WEIGHT); } +#line 1989 "expression_parser.php" +#line 263 "expression_parser.y" + function yy_r108(){ $this->_retvalue = $this->_expr->_objective('new', array($this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor), Opt_Expression_Standard::NEW_WEIGHT); } +#line 1992 "expression_parser.php" + + private $_retvalue; + + function yy_reduce($yyruleno) + { + $yymsp = $this->yystack[$this->yyidx]; + if (self::$yyTraceFILE && $yyruleno >= 0 + && $yyruleno < count(self::$yyRuleName)) { + fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n", + self::$yyTracePrompt, $yyruleno, + self::$yyRuleName[$yyruleno]); + } + + $this->_retvalue = $yy_lefthand_side = null; + if (array_key_exists($yyruleno, self::$yyReduceMap)) { + // call the action + $this->_retvalue = null; + $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}(); + $yy_lefthand_side = $this->_retvalue; + } + $yygoto = self::$yyRuleInfo[$yyruleno]['lhs']; + $yysize = self::$yyRuleInfo[$yyruleno]['rhs']; + $this->yyidx -= $yysize; + for($i = $yysize; $i; $i--) { + // pop all of the right-hand side parameters + array_pop($this->yystack); + } + $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto); + if ($yyact < self::YYNSTATE) { + if (!self::$yyTraceFILE && $yysize) { + $this->yyidx++; + $x = new Opt_Expression_Standard_yyStackEntry; + $x->stateno = $yyact; + $x->major = $yygoto; + $x->minor = $yy_lefthand_side; + $this->yystack[$this->yyidx] = $x; + } else { + $this->yy_shift($yyact, $yygoto, $yy_lefthand_side); + } + } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) { + $this->yy_accept(); + } + } + + function yy_parse_failed() + { + if (self::$yyTraceFILE) { + fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt); + } + while ($this->yyidx >= 0) { + $this->yy_pop_parser_stack(); + } + } + + function yy_syntax_error($yymajor, $TOKEN) + { +#line 22 "expression_parser.y" + + throw new Opt_Expression_Exception('Invalid token: '.$TOKEN); +#line 2053 "expression_parser.php" + } + + function yy_accept() + { + if (self::$yyTraceFILE) { + fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt); + } + while ($this->yyidx >= 0) { + $stack = $this->yy_pop_parser_stack(); + } + } + + function doParse($yymajor, $yytokenvalue) + { + $yyerrorhit = 0; /* True if yymajor has invoked an error */ + + if ($this->yyidx === null || $this->yyidx < 0) { + $this->yyidx = 0; + $this->yyerrcnt = -1; + $x = new Opt_Expression_Standard_yyStackEntry; + $x->stateno = 0; + $x->major = 0; + $this->yystack = array(); + array_push($this->yystack, $x); + } + $yyendofinput = ($yymajor==0); + + if (self::$yyTraceFILE) { + fprintf(self::$yyTraceFILE, "%sInput %s\n", + self::$yyTracePrompt, $this->yyTokenName[$yymajor]); + } + + do { + $yyact = $this->yy_find_shift_action($yymajor); + if ($yymajor < self::YYERRORSYMBOL && + !$this->yy_is_expected_token($yymajor)) { + // force a syntax error + $yyact = self::YY_ERROR_ACTION; + } + if ($yyact < self::YYNSTATE) { + $this->yy_shift($yyact, $yymajor, $yytokenvalue); + $this->yyerrcnt--; + if ($yyendofinput && $this->yyidx >= 0) { + $yymajor = 0; + } else { + $yymajor = self::YYNOCODE; + } + } elseif ($yyact < self::YYNSTATE + self::YYNRULE) { + $this->yy_reduce($yyact - self::YYNSTATE); + } elseif ($yyact == self::YY_ERROR_ACTION) { + if (self::$yyTraceFILE) { + fprintf(self::$yyTraceFILE, "%sSyntax Error!\n", + self::$yyTracePrompt); + } + if (self::YYERRORSYMBOL) { + if ($this->yyerrcnt < 0) { + $this->yy_syntax_error($yymajor, $yytokenvalue); + } + $yymx = $this->yystack[$this->yyidx]->major; + if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){ + if (self::$yyTraceFILE) { + fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n", + self::$yyTracePrompt, $this->yyTokenName[$yymajor]); + } + $this->yy_destructor($yymajor, $yytokenvalue); + $yymajor = self::YYNOCODE; + } else { + while ($this->yyidx >= 0 && + $yymx != self::YYERRORSYMBOL && + ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE + ){ + $this->yy_pop_parser_stack(); + } + if ($this->yyidx < 0 || $yymajor==0) { + $this->yy_destructor($yymajor, $yytokenvalue); + $this->yy_parse_failed(); + $yymajor = self::YYNOCODE; + } elseif ($yymx != self::YYERRORSYMBOL) { + $u2 = 0; + $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2); + } + } + $this->yyerrcnt = 3; + $yyerrorhit = 1; + } else { + if ($this->yyerrcnt <= 0) { + $this->yy_syntax_error($yymajor, $yytokenvalue); + } + $this->yyerrcnt = 3; + $this->yy_destructor($yymajor, $yytokenvalue); + if ($yyendofinput) { + $this->yy_parse_failed(); + } + $yymajor = self::YYNOCODE; + } + } else { + $this->yy_accept(); + $yymajor = self::YYNOCODE; + } + } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0); + } +} diff --git a/tools/lexer/expression_parser.y b/tools/lexer/expression_parser.y index 8463e02..07726fb 100644 --- a/tools/lexer/expression_parser.y +++ b/tools/lexer/expression_parser.y @@ -22,7 +22,7 @@ } %syntax_error { - throw new Opt_Expression_Exception($TOKEN, $this->_expr->getExpression()); + throw new Opt_Expression_Exception('Invalid token: '.$TOKEN); } %left AND.