Best Gherkin-php code snippet using Parser.match_Other
Parser.php
Source: Parser.php 
...160            fn () => $context->tokenMatcher->match_Language($token),161            false,162        );163    }164    private function match_Other(ParserContext $context, Token $token): bool165    {166        if ($token->isEOF()) {167            return false;168        }169        return $this->handleExternalError(170            $context,171            fn () => $context->tokenMatcher->match_Other($token),172            false,173        );174    }175    private function matchToken(int $state, Token $token, ParserContext $context): int176    {177        return match ($state) {178            0 => $this->matchTokenAt_0($token, $context),179            1 => $this->matchTokenAt_1($token, $context),180            2 => $this->matchTokenAt_2($token, $context),181            3 => $this->matchTokenAt_3($token, $context),182            4 => $this->matchTokenAt_4($token, $context),183            5 => $this->matchTokenAt_5($token, $context),184            6 => $this->matchTokenAt_6($token, $context),185            7 => $this->matchTokenAt_7($token, $context),186            8 => $this->matchTokenAt_8($token, $context),187            9 => $this->matchTokenAt_9($token, $context),188            10 => $this->matchTokenAt_10($token, $context),189            11 => $this->matchTokenAt_11($token, $context),190            12 => $this->matchTokenAt_12($token, $context),191            13 => $this->matchTokenAt_13($token, $context),192            14 => $this->matchTokenAt_14($token, $context),193            15 => $this->matchTokenAt_15($token, $context),194            16 => $this->matchTokenAt_16($token, $context),195            17 => $this->matchTokenAt_17($token, $context),196            18 => $this->matchTokenAt_18($token, $context),197            19 => $this->matchTokenAt_19($token, $context),198            20 => $this->matchTokenAt_20($token, $context),199            21 => $this->matchTokenAt_21($token, $context),200            22 => $this->matchTokenAt_22($token, $context),201            23 => $this->matchTokenAt_23($token, $context),202            24 => $this->matchTokenAt_24($token, $context),203            25 => $this->matchTokenAt_25($token, $context),204            26 => $this->matchTokenAt_26($token, $context),205            27 => $this->matchTokenAt_27($token, $context),206            28 => $this->matchTokenAt_28($token, $context),207            29 => $this->matchTokenAt_29($token, $context),208            30 => $this->matchTokenAt_30($token, $context),209            31 => $this->matchTokenAt_31($token, $context),210            32 => $this->matchTokenAt_32($token, $context),211            33 => $this->matchTokenAt_33($token, $context),212            34 => $this->matchTokenAt_34($token, $context),213            35 => $this->matchTokenAt_35($token, $context),214            36 => $this->matchTokenAt_36($token, $context),215            37 => $this->matchTokenAt_37($token, $context),216            38 => $this->matchTokenAt_38($token, $context),217            39 => $this->matchTokenAt_39($token, $context),218            40 => $this->matchTokenAt_40($token, $context),219            41 => $this->matchTokenAt_41($token, $context),220            43 => $this->matchTokenAt_43($token, $context),221            44 => $this->matchTokenAt_44($token, $context),222            45 => $this->matchTokenAt_45($token, $context),223            46 => $this->matchTokenAt_46($token, $context),224            47 => $this->matchTokenAt_47($token, $context),225            48 => $this->matchTokenAt_48($token, $context),226            49 => $this->matchTokenAt_49($token, $context),227            50 => $this->matchTokenAt_50($token, $context),228            default => throw new \LogicException("Unknown state: $state"),229        };230    }231    // Start232    private function matchTokenAt_0(Token $token, ParserContext $context): int233    {234        if ($this->match_EOF($context, $token)) {235            $this->build($context, $token);236            return 42;237        }238        if ($this->match_Language($context, $token)) {239            $this->startRule($context, RuleType::Feature);240            $this->startRule($context, RuleType::FeatureHeader);241            $this->build($context, $token);242            return 1;243        }244        if ($this->match_TagLine($context, $token)) {245            $this->startRule($context, RuleType::Feature);246            $this->startRule($context, RuleType::FeatureHeader);247            $this->startRule($context, RuleType::Tags);248            $this->build($context, $token);249            return 2;250        }251        if ($this->match_FeatureLine($context, $token)) {252            $this->startRule($context, RuleType::Feature);253            $this->startRule($context, RuleType::FeatureHeader);254            $this->build($context, $token);255            return 3;256        }257        if ($this->match_Comment($context, $token)) {258            $this->build($context, $token);259            return 0;260        }261        if ($this->match_Empty($context, $token)) {262            $this->build($context, $token);263            return 0;264        }265        $stateComment = "State: 0 - Start";266        $expectedTokens = ["#EOF", "#Language", "#TagLine", "#FeatureLine", "#Comment", "#Empty"];267        $error = $token->isEOF()268                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)269                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);270        $this->addError($context, $error);271        return 0;272    }273    // GherkinDocument:0>Feature:0>FeatureHeader:0>#Language:0274    private function matchTokenAt_1(Token $token, ParserContext $context): int275    {276        if ($this->match_TagLine($context, $token)) {277            $this->startRule($context, RuleType::Tags);278            $this->build($context, $token);279            return 2;280        }281        if ($this->match_FeatureLine($context, $token)) {282            $this->build($context, $token);283            return 3;284        }285        if ($this->match_Comment($context, $token)) {286            $this->build($context, $token);287            return 1;288        }289        if ($this->match_Empty($context, $token)) {290            $this->build($context, $token);291            return 1;292        }293        $stateComment = "State: 1 - GherkinDocument:0>Feature:0>FeatureHeader:0>#Language:0";294        $expectedTokens = ["#TagLine", "#FeatureLine", "#Comment", "#Empty"];295        $error = $token->isEOF()296                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)297                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);298        $this->addError($context, $error);299        return 1;300    }301    // GherkinDocument:0>Feature:0>FeatureHeader:1>Tags:0>#TagLine:0302    private function matchTokenAt_2(Token $token, ParserContext $context): int303    {304        if ($this->match_TagLine($context, $token)) {305            $this->build($context, $token);306            return 2;307        }308        if ($this->match_FeatureLine($context, $token)) {309            $this->endRule($context, RuleType::Tags);310            $this->build($context, $token);311            return 3;312        }313        if ($this->match_Comment($context, $token)) {314            $this->build($context, $token);315            return 2;316        }317        if ($this->match_Empty($context, $token)) {318            $this->build($context, $token);319            return 2;320        }321        $stateComment = "State: 2 - GherkinDocument:0>Feature:0>FeatureHeader:1>Tags:0>#TagLine:0";322        $expectedTokens = ["#TagLine", "#FeatureLine", "#Comment", "#Empty"];323        $error = $token->isEOF()324                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)325                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);326        $this->addError($context, $error);327        return 2;328    }329    // GherkinDocument:0>Feature:0>FeatureHeader:2>#FeatureLine:0330    private function matchTokenAt_3(Token $token, ParserContext $context): int331    {332        if ($this->match_EOF($context, $token)) {333            $this->endRule($context, RuleType::FeatureHeader);334            $this->endRule($context, RuleType::Feature);335            $this->build($context, $token);336            return 42;337        }338        if ($this->match_Empty($context, $token)) {339            $this->build($context, $token);340            return 3;341        }342        if ($this->match_Comment($context, $token)) {343            $this->build($context, $token);344            return 5;345        }346        if ($this->match_BackgroundLine($context, $token)) {347            $this->endRule($context, RuleType::FeatureHeader);348            $this->startRule($context, RuleType::Background);349            $this->build($context, $token);350            return 6;351        }352        if ($this->match_TagLine($context, $token)) {353            if ($this->lookahead_0($context)) {354                $this->endRule($context, RuleType::FeatureHeader);355                $this->startRule($context, RuleType::ScenarioDefinition);356                $this->startRule($context, RuleType::Tags);357                $this->build($context, $token);358                return 11;359            }360        }361        if ($this->match_TagLine($context, $token)) {362            $this->endRule($context, RuleType::FeatureHeader);363            $this->startRule($context, RuleType::Rule);364            $this->startRule($context, RuleType::RuleHeader);365            $this->startRule($context, RuleType::Tags);366            $this->build($context, $token);367            return 22;368        }369        if ($this->match_ScenarioLine($context, $token)) {370            $this->endRule($context, RuleType::FeatureHeader);371            $this->startRule($context, RuleType::ScenarioDefinition);372            $this->startRule($context, RuleType::Scenario);373            $this->build($context, $token);374            return 12;375        }376        if ($this->match_RuleLine($context, $token)) {377            $this->endRule($context, RuleType::FeatureHeader);378            $this->startRule($context, RuleType::Rule);379            $this->startRule($context, RuleType::RuleHeader);380            $this->build($context, $token);381            return 23;382        }383        if ($this->match_Other($context, $token)) {384            $this->startRule($context, RuleType::Description);385            $this->build($context, $token);386            return 4;387        }388        $stateComment = "State: 3 - GherkinDocument:0>Feature:0>FeatureHeader:2>#FeatureLine:0";389        $expectedTokens = ["#EOF", "#Empty", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"];390        $error = $token->isEOF()391                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)392                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);393        $this->addError($context, $error);394        return 3;395    }396    // GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:1>Description:0>#Other:0397    private function matchTokenAt_4(Token $token, ParserContext $context): int398    {399        if ($this->match_EOF($context, $token)) {400            $this->endRule($context, RuleType::Description);401            $this->endRule($context, RuleType::FeatureHeader);402            $this->endRule($context, RuleType::Feature);403            $this->build($context, $token);404            return 42;405        }406        if ($this->match_Comment($context, $token)) {407            $this->endRule($context, RuleType::Description);408            $this->build($context, $token);409            return 5;410        }411        if ($this->match_BackgroundLine($context, $token)) {412            $this->endRule($context, RuleType::Description);413            $this->endRule($context, RuleType::FeatureHeader);414            $this->startRule($context, RuleType::Background);415            $this->build($context, $token);416            return 6;417        }418        if ($this->match_TagLine($context, $token)) {419            if ($this->lookahead_0($context)) {420                $this->endRule($context, RuleType::Description);421                $this->endRule($context, RuleType::FeatureHeader);422                $this->startRule($context, RuleType::ScenarioDefinition);423                $this->startRule($context, RuleType::Tags);424                $this->build($context, $token);425                return 11;426            }427        }428        if ($this->match_TagLine($context, $token)) {429            $this->endRule($context, RuleType::Description);430            $this->endRule($context, RuleType::FeatureHeader);431            $this->startRule($context, RuleType::Rule);432            $this->startRule($context, RuleType::RuleHeader);433            $this->startRule($context, RuleType::Tags);434            $this->build($context, $token);435            return 22;436        }437        if ($this->match_ScenarioLine($context, $token)) {438            $this->endRule($context, RuleType::Description);439            $this->endRule($context, RuleType::FeatureHeader);440            $this->startRule($context, RuleType::ScenarioDefinition);441            $this->startRule($context, RuleType::Scenario);442            $this->build($context, $token);443            return 12;444        }445        if ($this->match_RuleLine($context, $token)) {446            $this->endRule($context, RuleType::Description);447            $this->endRule($context, RuleType::FeatureHeader);448            $this->startRule($context, RuleType::Rule);449            $this->startRule($context, RuleType::RuleHeader);450            $this->build($context, $token);451            return 23;452        }453        if ($this->match_Other($context, $token)) {454            $this->build($context, $token);455            return 4;456        }457        $stateComment = "State: 4 - GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:1>Description:0>#Other:0";458        $expectedTokens = ["#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"];459        $error = $token->isEOF()460                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)461                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);462        $this->addError($context, $error);463        return 4;464    }465    // GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:2>#Comment:0466    private function matchTokenAt_5(Token $token, ParserContext $context): int467    {468        if ($this->match_EOF($context, $token)) {469            $this->endRule($context, RuleType::FeatureHeader);470            $this->endRule($context, RuleType::Feature);471            $this->build($context, $token);472            return 42;473        }474        if ($this->match_Comment($context, $token)) {475            $this->build($context, $token);476            return 5;477        }478        if ($this->match_BackgroundLine($context, $token)) {479            $this->endRule($context, RuleType::FeatureHeader);480            $this->startRule($context, RuleType::Background);481            $this->build($context, $token);482            return 6;483        }484        if ($this->match_TagLine($context, $token)) {485            if ($this->lookahead_0($context)) {486                $this->endRule($context, RuleType::FeatureHeader);487                $this->startRule($context, RuleType::ScenarioDefinition);488                $this->startRule($context, RuleType::Tags);489                $this->build($context, $token);490                return 11;491            }492        }493        if ($this->match_TagLine($context, $token)) {494            $this->endRule($context, RuleType::FeatureHeader);495            $this->startRule($context, RuleType::Rule);496            $this->startRule($context, RuleType::RuleHeader);497            $this->startRule($context, RuleType::Tags);498            $this->build($context, $token);499            return 22;500        }501        if ($this->match_ScenarioLine($context, $token)) {502            $this->endRule($context, RuleType::FeatureHeader);503            $this->startRule($context, RuleType::ScenarioDefinition);504            $this->startRule($context, RuleType::Scenario);505            $this->build($context, $token);506            return 12;507        }508        if ($this->match_RuleLine($context, $token)) {509            $this->endRule($context, RuleType::FeatureHeader);510            $this->startRule($context, RuleType::Rule);511            $this->startRule($context, RuleType::RuleHeader);512            $this->build($context, $token);513            return 23;514        }515        if ($this->match_Empty($context, $token)) {516            $this->build($context, $token);517            return 5;518        }519        $stateComment = "State: 5 - GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:2>#Comment:0";520        $expectedTokens = ["#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Empty"];521        $error = $token->isEOF()522                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)523                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);524        $this->addError($context, $error);525        return 5;526    }527    // GherkinDocument:0>Feature:1>Background:0>#BackgroundLine:0528    private function matchTokenAt_6(Token $token, ParserContext $context): int529    {530        if ($this->match_EOF($context, $token)) {531            $this->endRule($context, RuleType::Background);532            $this->endRule($context, RuleType::Feature);533            $this->build($context, $token);534            return 42;535        }536        if ($this->match_Empty($context, $token)) {537            $this->build($context, $token);538            return 6;539        }540        if ($this->match_Comment($context, $token)) {541            $this->build($context, $token);542            return 8;543        }544        if ($this->match_StepLine($context, $token)) {545            $this->startRule($context, RuleType::Step);546            $this->build($context, $token);547            return 9;548        }549        if ($this->match_TagLine($context, $token)) {550            if ($this->lookahead_0($context)) {551                $this->endRule($context, RuleType::Background);552                $this->startRule($context, RuleType::ScenarioDefinition);553                $this->startRule($context, RuleType::Tags);554                $this->build($context, $token);555                return 11;556            }557        }558        if ($this->match_TagLine($context, $token)) {559            $this->endRule($context, RuleType::Background);560            $this->startRule($context, RuleType::Rule);561            $this->startRule($context, RuleType::RuleHeader);562            $this->startRule($context, RuleType::Tags);563            $this->build($context, $token);564            return 22;565        }566        if ($this->match_ScenarioLine($context, $token)) {567            $this->endRule($context, RuleType::Background);568            $this->startRule($context, RuleType::ScenarioDefinition);569            $this->startRule($context, RuleType::Scenario);570            $this->build($context, $token);571            return 12;572        }573        if ($this->match_RuleLine($context, $token)) {574            $this->endRule($context, RuleType::Background);575            $this->startRule($context, RuleType::Rule);576            $this->startRule($context, RuleType::RuleHeader);577            $this->build($context, $token);578            return 23;579        }580        if ($this->match_Other($context, $token)) {581            $this->startRule($context, RuleType::Description);582            $this->build($context, $token);583            return 7;584        }585        $stateComment = "State: 6 - GherkinDocument:0>Feature:1>Background:0>#BackgroundLine:0";586        $expectedTokens = ["#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"];587        $error = $token->isEOF()588                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)589                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);590        $this->addError($context, $error);591        return 6;592    }593    // GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:1>Description:0>#Other:0594    private function matchTokenAt_7(Token $token, ParserContext $context): int595    {596        if ($this->match_EOF($context, $token)) {597            $this->endRule($context, RuleType::Description);598            $this->endRule($context, RuleType::Background);599            $this->endRule($context, RuleType::Feature);600            $this->build($context, $token);601            return 42;602        }603        if ($this->match_Comment($context, $token)) {604            $this->endRule($context, RuleType::Description);605            $this->build($context, $token);606            return 8;607        }608        if ($this->match_StepLine($context, $token)) {609            $this->endRule($context, RuleType::Description);610            $this->startRule($context, RuleType::Step);611            $this->build($context, $token);612            return 9;613        }614        if ($this->match_TagLine($context, $token)) {615            if ($this->lookahead_0($context)) {616                $this->endRule($context, RuleType::Description);617                $this->endRule($context, RuleType::Background);618                $this->startRule($context, RuleType::ScenarioDefinition);619                $this->startRule($context, RuleType::Tags);620                $this->build($context, $token);621                return 11;622            }623        }624        if ($this->match_TagLine($context, $token)) {625            $this->endRule($context, RuleType::Description);626            $this->endRule($context, RuleType::Background);627            $this->startRule($context, RuleType::Rule);628            $this->startRule($context, RuleType::RuleHeader);629            $this->startRule($context, RuleType::Tags);630            $this->build($context, $token);631            return 22;632        }633        if ($this->match_ScenarioLine($context, $token)) {634            $this->endRule($context, RuleType::Description);635            $this->endRule($context, RuleType::Background);636            $this->startRule($context, RuleType::ScenarioDefinition);637            $this->startRule($context, RuleType::Scenario);638            $this->build($context, $token);639            return 12;640        }641        if ($this->match_RuleLine($context, $token)) {642            $this->endRule($context, RuleType::Description);643            $this->endRule($context, RuleType::Background);644            $this->startRule($context, RuleType::Rule);645            $this->startRule($context, RuleType::RuleHeader);646            $this->build($context, $token);647            return 23;648        }649        if ($this->match_Other($context, $token)) {650            $this->build($context, $token);651            return 7;652        }653        $stateComment = "State: 7 - GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:1>Description:0>#Other:0";654        $expectedTokens = ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"];655        $error = $token->isEOF()656                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)657                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);658        $this->addError($context, $error);659        return 7;660    }661    // GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:2>#Comment:0662    private function matchTokenAt_8(Token $token, ParserContext $context): int663    {664        if ($this->match_EOF($context, $token)) {665            $this->endRule($context, RuleType::Background);666            $this->endRule($context, RuleType::Feature);667            $this->build($context, $token);668            return 42;669        }670        if ($this->match_Comment($context, $token)) {671            $this->build($context, $token);672            return 8;673        }674        if ($this->match_StepLine($context, $token)) {675            $this->startRule($context, RuleType::Step);676            $this->build($context, $token);677            return 9;678        }679        if ($this->match_TagLine($context, $token)) {680            if ($this->lookahead_0($context)) {681                $this->endRule($context, RuleType::Background);682                $this->startRule($context, RuleType::ScenarioDefinition);683                $this->startRule($context, RuleType::Tags);684                $this->build($context, $token);685                return 11;686            }687        }688        if ($this->match_TagLine($context, $token)) {689            $this->endRule($context, RuleType::Background);690            $this->startRule($context, RuleType::Rule);691            $this->startRule($context, RuleType::RuleHeader);692            $this->startRule($context, RuleType::Tags);693            $this->build($context, $token);694            return 22;695        }696        if ($this->match_ScenarioLine($context, $token)) {697            $this->endRule($context, RuleType::Background);698            $this->startRule($context, RuleType::ScenarioDefinition);699            $this->startRule($context, RuleType::Scenario);700            $this->build($context, $token);701            return 12;702        }703        if ($this->match_RuleLine($context, $token)) {704            $this->endRule($context, RuleType::Background);705            $this->startRule($context, RuleType::Rule);706            $this->startRule($context, RuleType::RuleHeader);707            $this->build($context, $token);708            return 23;709        }710        if ($this->match_Empty($context, $token)) {711            $this->build($context, $token);712            return 8;713        }714        $stateComment = "State: 8 - GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:2>#Comment:0";715        $expectedTokens = ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Empty"];716        $error = $token->isEOF()717                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)718                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);719        $this->addError($context, $error);720        return 8;721    }722    // GherkinDocument:0>Feature:1>Background:2>Step:0>#StepLine:0723    private function matchTokenAt_9(Token $token, ParserContext $context): int724    {725        if ($this->match_EOF($context, $token)) {726            $this->endRule($context, RuleType::Step);727            $this->endRule($context, RuleType::Background);728            $this->endRule($context, RuleType::Feature);729            $this->build($context, $token);730            return 42;731        }732        if ($this->match_TableRow($context, $token)) {733            $this->startRule($context, RuleType::DataTable);734            $this->build($context, $token);735            return 10;736        }737        if ($this->match_DocStringSeparator($context, $token)) {738            $this->startRule($context, RuleType::DocString);739            $this->build($context, $token);740            return 49;741        }742        if ($this->match_StepLine($context, $token)) {743            $this->endRule($context, RuleType::Step);744            $this->startRule($context, RuleType::Step);745            $this->build($context, $token);746            return 9;747        }748        if ($this->match_TagLine($context, $token)) {749            if ($this->lookahead_0($context)) {750                $this->endRule($context, RuleType::Step);751                $this->endRule($context, RuleType::Background);752                $this->startRule($context, RuleType::ScenarioDefinition);753                $this->startRule($context, RuleType::Tags);754                $this->build($context, $token);755                return 11;756            }757        }758        if ($this->match_TagLine($context, $token)) {759            $this->endRule($context, RuleType::Step);760            $this->endRule($context, RuleType::Background);761            $this->startRule($context, RuleType::Rule);762            $this->startRule($context, RuleType::RuleHeader);763            $this->startRule($context, RuleType::Tags);764            $this->build($context, $token);765            return 22;766        }767        if ($this->match_ScenarioLine($context, $token)) {768            $this->endRule($context, RuleType::Step);769            $this->endRule($context, RuleType::Background);770            $this->startRule($context, RuleType::ScenarioDefinition);771            $this->startRule($context, RuleType::Scenario);772            $this->build($context, $token);773            return 12;774        }775        if ($this->match_RuleLine($context, $token)) {776            $this->endRule($context, RuleType::Step);777            $this->endRule($context, RuleType::Background);778            $this->startRule($context, RuleType::Rule);779            $this->startRule($context, RuleType::RuleHeader);780            $this->build($context, $token);781            return 23;782        }783        if ($this->match_Comment($context, $token)) {784            $this->build($context, $token);785            return 9;786        }787        if ($this->match_Empty($context, $token)) {788            $this->build($context, $token);789            return 9;790        }791        $stateComment = "State: 9 - GherkinDocument:0>Feature:1>Background:2>Step:0>#StepLine:0";792        $expectedTokens = ["#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];793        $error = $token->isEOF()794                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)795                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);796        $this->addError($context, $error);797        return 9;798    }799    // GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0800    private function matchTokenAt_10(Token $token, ParserContext $context): int801    {802        if ($this->match_EOF($context, $token)) {803            $this->endRule($context, RuleType::DataTable);804            $this->endRule($context, RuleType::Step);805            $this->endRule($context, RuleType::Background);806            $this->endRule($context, RuleType::Feature);807            $this->build($context, $token);808            return 42;809        }810        if ($this->match_TableRow($context, $token)) {811            $this->build($context, $token);812            return 10;813        }814        if ($this->match_StepLine($context, $token)) {815            $this->endRule($context, RuleType::DataTable);816            $this->endRule($context, RuleType::Step);817            $this->startRule($context, RuleType::Step);818            $this->build($context, $token);819            return 9;820        }821        if ($this->match_TagLine($context, $token)) {822            if ($this->lookahead_0($context)) {823                $this->endRule($context, RuleType::DataTable);824                $this->endRule($context, RuleType::Step);825                $this->endRule($context, RuleType::Background);826                $this->startRule($context, RuleType::ScenarioDefinition);827                $this->startRule($context, RuleType::Tags);828                $this->build($context, $token);829                return 11;830            }831        }832        if ($this->match_TagLine($context, $token)) {833            $this->endRule($context, RuleType::DataTable);834            $this->endRule($context, RuleType::Step);835            $this->endRule($context, RuleType::Background);836            $this->startRule($context, RuleType::Rule);837            $this->startRule($context, RuleType::RuleHeader);838            $this->startRule($context, RuleType::Tags);839            $this->build($context, $token);840            return 22;841        }842        if ($this->match_ScenarioLine($context, $token)) {843            $this->endRule($context, RuleType::DataTable);844            $this->endRule($context, RuleType::Step);845            $this->endRule($context, RuleType::Background);846            $this->startRule($context, RuleType::ScenarioDefinition);847            $this->startRule($context, RuleType::Scenario);848            $this->build($context, $token);849            return 12;850        }851        if ($this->match_RuleLine($context, $token)) {852            $this->endRule($context, RuleType::DataTable);853            $this->endRule($context, RuleType::Step);854            $this->endRule($context, RuleType::Background);855            $this->startRule($context, RuleType::Rule);856            $this->startRule($context, RuleType::RuleHeader);857            $this->build($context, $token);858            return 23;859        }860        if ($this->match_Comment($context, $token)) {861            $this->build($context, $token);862            return 10;863        }864        if ($this->match_Empty($context, $token)) {865            $this->build($context, $token);866            return 10;867        }868        $stateComment = "State: 10 - GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0";869        $expectedTokens = ["#EOF", "#TableRow", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];870        $error = $token->isEOF()871                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)872                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);873        $this->addError($context, $error);874        return 10;875    }876    // GherkinDocument:0>Feature:2>ScenarioDefinition:0>Tags:0>#TagLine:0877    private function matchTokenAt_11(Token $token, ParserContext $context): int878    {879        if ($this->match_TagLine($context, $token)) {880            $this->build($context, $token);881            return 11;882        }883        if ($this->match_ScenarioLine($context, $token)) {884            $this->endRule($context, RuleType::Tags);885            $this->startRule($context, RuleType::Scenario);886            $this->build($context, $token);887            return 12;888        }889        if ($this->match_Comment($context, $token)) {890            $this->build($context, $token);891            return 11;892        }893        if ($this->match_Empty($context, $token)) {894            $this->build($context, $token);895            return 11;896        }897        $stateComment = "State: 11 - GherkinDocument:0>Feature:2>ScenarioDefinition:0>Tags:0>#TagLine:0";898        $expectedTokens = ["#TagLine", "#ScenarioLine", "#Comment", "#Empty"];899        $error = $token->isEOF()900                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)901                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);902        $this->addError($context, $error);903        return 11;904    }905    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0906    private function matchTokenAt_12(Token $token, ParserContext $context): int907    {908        if ($this->match_EOF($context, $token)) {909            $this->endRule($context, RuleType::Scenario);910            $this->endRule($context, RuleType::ScenarioDefinition);911            $this->endRule($context, RuleType::Feature);912            $this->build($context, $token);913            return 42;914        }915        if ($this->match_Empty($context, $token)) {916            $this->build($context, $token);917            return 12;918        }919        if ($this->match_Comment($context, $token)) {920            $this->build($context, $token);921            return 14;922        }923        if ($this->match_StepLine($context, $token)) {924            $this->startRule($context, RuleType::Step);925            $this->build($context, $token);926            return 15;927        }928        if ($this->match_TagLine($context, $token)) {929            if ($this->lookahead_1($context)) {930                $this->startRule($context, RuleType::ExamplesDefinition);931                $this->startRule($context, RuleType::Tags);932                $this->build($context, $token);933                return 17;934            }935        }936        if ($this->match_TagLine($context, $token)) {937            if ($this->lookahead_0($context)) {938                $this->endRule($context, RuleType::Scenario);939                $this->endRule($context, RuleType::ScenarioDefinition);940                $this->startRule($context, RuleType::ScenarioDefinition);941                $this->startRule($context, RuleType::Tags);942                $this->build($context, $token);943                return 11;944            }945        }946        if ($this->match_TagLine($context, $token)) {947            $this->endRule($context, RuleType::Scenario);948            $this->endRule($context, RuleType::ScenarioDefinition);949            $this->startRule($context, RuleType::Rule);950            $this->startRule($context, RuleType::RuleHeader);951            $this->startRule($context, RuleType::Tags);952            $this->build($context, $token);953            return 22;954        }955        if ($this->match_ExamplesLine($context, $token)) {956            $this->startRule($context, RuleType::ExamplesDefinition);957            $this->startRule($context, RuleType::Examples);958            $this->build($context, $token);959            return 18;960        }961        if ($this->match_ScenarioLine($context, $token)) {962            $this->endRule($context, RuleType::Scenario);963            $this->endRule($context, RuleType::ScenarioDefinition);964            $this->startRule($context, RuleType::ScenarioDefinition);965            $this->startRule($context, RuleType::Scenario);966            $this->build($context, $token);967            return 12;968        }969        if ($this->match_RuleLine($context, $token)) {970            $this->endRule($context, RuleType::Scenario);971            $this->endRule($context, RuleType::ScenarioDefinition);972            $this->startRule($context, RuleType::Rule);973            $this->startRule($context, RuleType::RuleHeader);974            $this->build($context, $token);975            return 23;976        }977        if ($this->match_Other($context, $token)) {978            $this->startRule($context, RuleType::Description);979            $this->build($context, $token);980            return 13;981        }982        $stateComment = "State: 12 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0";983        $expectedTokens = ["#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"];984        $error = $token->isEOF()985                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)986                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);987        $this->addError($context, $error);988        return 12;989    }990    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>#Other:0991    private function matchTokenAt_13(Token $token, ParserContext $context): int992    {993        if ($this->match_EOF($context, $token)) {994            $this->endRule($context, RuleType::Description);995            $this->endRule($context, RuleType::Scenario);996            $this->endRule($context, RuleType::ScenarioDefinition);997            $this->endRule($context, RuleType::Feature);998            $this->build($context, $token);999            return 42;1000        }1001        if ($this->match_Comment($context, $token)) {1002            $this->endRule($context, RuleType::Description);1003            $this->build($context, $token);1004            return 14;1005        }1006        if ($this->match_StepLine($context, $token)) {1007            $this->endRule($context, RuleType::Description);1008            $this->startRule($context, RuleType::Step);1009            $this->build($context, $token);1010            return 15;1011        }1012        if ($this->match_TagLine($context, $token)) {1013            if ($this->lookahead_1($context)) {1014                $this->endRule($context, RuleType::Description);1015                $this->startRule($context, RuleType::ExamplesDefinition);1016                $this->startRule($context, RuleType::Tags);1017                $this->build($context, $token);1018                return 17;1019            }1020        }1021        if ($this->match_TagLine($context, $token)) {1022            if ($this->lookahead_0($context)) {1023                $this->endRule($context, RuleType::Description);1024                $this->endRule($context, RuleType::Scenario);1025                $this->endRule($context, RuleType::ScenarioDefinition);1026                $this->startRule($context, RuleType::ScenarioDefinition);1027                $this->startRule($context, RuleType::Tags);1028                $this->build($context, $token);1029                return 11;1030            }1031        }1032        if ($this->match_TagLine($context, $token)) {1033            $this->endRule($context, RuleType::Description);1034            $this->endRule($context, RuleType::Scenario);1035            $this->endRule($context, RuleType::ScenarioDefinition);1036            $this->startRule($context, RuleType::Rule);1037            $this->startRule($context, RuleType::RuleHeader);1038            $this->startRule($context, RuleType::Tags);1039            $this->build($context, $token);1040            return 22;1041        }1042        if ($this->match_ExamplesLine($context, $token)) {1043            $this->endRule($context, RuleType::Description);1044            $this->startRule($context, RuleType::ExamplesDefinition);1045            $this->startRule($context, RuleType::Examples);1046            $this->build($context, $token);1047            return 18;1048        }1049        if ($this->match_ScenarioLine($context, $token)) {1050            $this->endRule($context, RuleType::Description);1051            $this->endRule($context, RuleType::Scenario);1052            $this->endRule($context, RuleType::ScenarioDefinition);1053            $this->startRule($context, RuleType::ScenarioDefinition);1054            $this->startRule($context, RuleType::Scenario);1055            $this->build($context, $token);1056            return 12;1057        }1058        if ($this->match_RuleLine($context, $token)) {1059            $this->endRule($context, RuleType::Description);1060            $this->endRule($context, RuleType::Scenario);1061            $this->endRule($context, RuleType::ScenarioDefinition);1062            $this->startRule($context, RuleType::Rule);1063            $this->startRule($context, RuleType::RuleHeader);1064            $this->build($context, $token);1065            return 23;1066        }1067        if ($this->match_Other($context, $token)) {1068            $this->build($context, $token);1069            return 13;1070        }1071        $stateComment = "State: 13 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>#Other:0";1072        $expectedTokens = ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"];1073        $error = $token->isEOF()1074                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1075                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1076        $this->addError($context, $error);1077        return 13;1078    }1079    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:2>#Comment:01080    private function matchTokenAt_14(Token $token, ParserContext $context): int1081    {1082        if ($this->match_EOF($context, $token)) {1083            $this->endRule($context, RuleType::Scenario);1084            $this->endRule($context, RuleType::ScenarioDefinition);1085            $this->endRule($context, RuleType::Feature);1086            $this->build($context, $token);1087            return 42;1088        }1089        if ($this->match_Comment($context, $token)) {1090            $this->build($context, $token);1091            return 14;1092        }1093        if ($this->match_StepLine($context, $token)) {1094            $this->startRule($context, RuleType::Step);1095            $this->build($context, $token);1096            return 15;1097        }1098        if ($this->match_TagLine($context, $token)) {1099            if ($this->lookahead_1($context)) {1100                $this->startRule($context, RuleType::ExamplesDefinition);1101                $this->startRule($context, RuleType::Tags);1102                $this->build($context, $token);1103                return 17;1104            }1105        }1106        if ($this->match_TagLine($context, $token)) {1107            if ($this->lookahead_0($context)) {1108                $this->endRule($context, RuleType::Scenario);1109                $this->endRule($context, RuleType::ScenarioDefinition);1110                $this->startRule($context, RuleType::ScenarioDefinition);1111                $this->startRule($context, RuleType::Tags);1112                $this->build($context, $token);1113                return 11;1114            }1115        }1116        if ($this->match_TagLine($context, $token)) {1117            $this->endRule($context, RuleType::Scenario);1118            $this->endRule($context, RuleType::ScenarioDefinition);1119            $this->startRule($context, RuleType::Rule);1120            $this->startRule($context, RuleType::RuleHeader);1121            $this->startRule($context, RuleType::Tags);1122            $this->build($context, $token);1123            return 22;1124        }1125        if ($this->match_ExamplesLine($context, $token)) {1126            $this->startRule($context, RuleType::ExamplesDefinition);1127            $this->startRule($context, RuleType::Examples);1128            $this->build($context, $token);1129            return 18;1130        }1131        if ($this->match_ScenarioLine($context, $token)) {1132            $this->endRule($context, RuleType::Scenario);1133            $this->endRule($context, RuleType::ScenarioDefinition);1134            $this->startRule($context, RuleType::ScenarioDefinition);1135            $this->startRule($context, RuleType::Scenario);1136            $this->build($context, $token);1137            return 12;1138        }1139        if ($this->match_RuleLine($context, $token)) {1140            $this->endRule($context, RuleType::Scenario);1141            $this->endRule($context, RuleType::ScenarioDefinition);1142            $this->startRule($context, RuleType::Rule);1143            $this->startRule($context, RuleType::RuleHeader);1144            $this->build($context, $token);1145            return 23;1146        }1147        if ($this->match_Empty($context, $token)) {1148            $this->build($context, $token);1149            return 14;1150        }1151        $stateComment = "State: 14 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:2>#Comment:0";1152        $expectedTokens = ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Empty"];1153        $error = $token->isEOF()1154                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1155                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1156        $this->addError($context, $error);1157        return 14;1158    }1159    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:01160    private function matchTokenAt_15(Token $token, ParserContext $context): int1161    {1162        if ($this->match_EOF($context, $token)) {1163            $this->endRule($context, RuleType::Step);1164            $this->endRule($context, RuleType::Scenario);1165            $this->endRule($context, RuleType::ScenarioDefinition);1166            $this->endRule($context, RuleType::Feature);1167            $this->build($context, $token);1168            return 42;1169        }1170        if ($this->match_TableRow($context, $token)) {1171            $this->startRule($context, RuleType::DataTable);1172            $this->build($context, $token);1173            return 16;1174        }1175        if ($this->match_DocStringSeparator($context, $token)) {1176            $this->startRule($context, RuleType::DocString);1177            $this->build($context, $token);1178            return 47;1179        }1180        if ($this->match_StepLine($context, $token)) {1181            $this->endRule($context, RuleType::Step);1182            $this->startRule($context, RuleType::Step);1183            $this->build($context, $token);1184            return 15;1185        }1186        if ($this->match_TagLine($context, $token)) {1187            if ($this->lookahead_1($context)) {1188                $this->endRule($context, RuleType::Step);1189                $this->startRule($context, RuleType::ExamplesDefinition);1190                $this->startRule($context, RuleType::Tags);1191                $this->build($context, $token);1192                return 17;1193            }1194        }1195        if ($this->match_TagLine($context, $token)) {1196            if ($this->lookahead_0($context)) {1197                $this->endRule($context, RuleType::Step);1198                $this->endRule($context, RuleType::Scenario);1199                $this->endRule($context, RuleType::ScenarioDefinition);1200                $this->startRule($context, RuleType::ScenarioDefinition);1201                $this->startRule($context, RuleType::Tags);1202                $this->build($context, $token);1203                return 11;1204            }1205        }1206        if ($this->match_TagLine($context, $token)) {1207            $this->endRule($context, RuleType::Step);1208            $this->endRule($context, RuleType::Scenario);1209            $this->endRule($context, RuleType::ScenarioDefinition);1210            $this->startRule($context, RuleType::Rule);1211            $this->startRule($context, RuleType::RuleHeader);1212            $this->startRule($context, RuleType::Tags);1213            $this->build($context, $token);1214            return 22;1215        }1216        if ($this->match_ExamplesLine($context, $token)) {1217            $this->endRule($context, RuleType::Step);1218            $this->startRule($context, RuleType::ExamplesDefinition);1219            $this->startRule($context, RuleType::Examples);1220            $this->build($context, $token);1221            return 18;1222        }1223        if ($this->match_ScenarioLine($context, $token)) {1224            $this->endRule($context, RuleType::Step);1225            $this->endRule($context, RuleType::Scenario);1226            $this->endRule($context, RuleType::ScenarioDefinition);1227            $this->startRule($context, RuleType::ScenarioDefinition);1228            $this->startRule($context, RuleType::Scenario);1229            $this->build($context, $token);1230            return 12;1231        }1232        if ($this->match_RuleLine($context, $token)) {1233            $this->endRule($context, RuleType::Step);1234            $this->endRule($context, RuleType::Scenario);1235            $this->endRule($context, RuleType::ScenarioDefinition);1236            $this->startRule($context, RuleType::Rule);1237            $this->startRule($context, RuleType::RuleHeader);1238            $this->build($context, $token);1239            return 23;1240        }1241        if ($this->match_Comment($context, $token)) {1242            $this->build($context, $token);1243            return 15;1244        }1245        if ($this->match_Empty($context, $token)) {1246            $this->build($context, $token);1247            return 15;1248        }1249        $stateComment = "State: 15 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0";1250        $expectedTokens = ["#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];1251        $error = $token->isEOF()1252                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1253                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1254        $this->addError($context, $error);1255        return 15;1256    }1257    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:01258    private function matchTokenAt_16(Token $token, ParserContext $context): int1259    {1260        if ($this->match_EOF($context, $token)) {1261            $this->endRule($context, RuleType::DataTable);1262            $this->endRule($context, RuleType::Step);1263            $this->endRule($context, RuleType::Scenario);1264            $this->endRule($context, RuleType::ScenarioDefinition);1265            $this->endRule($context, RuleType::Feature);1266            $this->build($context, $token);1267            return 42;1268        }1269        if ($this->match_TableRow($context, $token)) {1270            $this->build($context, $token);1271            return 16;1272        }1273        if ($this->match_StepLine($context, $token)) {1274            $this->endRule($context, RuleType::DataTable);1275            $this->endRule($context, RuleType::Step);1276            $this->startRule($context, RuleType::Step);1277            $this->build($context, $token);1278            return 15;1279        }1280        if ($this->match_TagLine($context, $token)) {1281            if ($this->lookahead_1($context)) {1282                $this->endRule($context, RuleType::DataTable);1283                $this->endRule($context, RuleType::Step);1284                $this->startRule($context, RuleType::ExamplesDefinition);1285                $this->startRule($context, RuleType::Tags);1286                $this->build($context, $token);1287                return 17;1288            }1289        }1290        if ($this->match_TagLine($context, $token)) {1291            if ($this->lookahead_0($context)) {1292                $this->endRule($context, RuleType::DataTable);1293                $this->endRule($context, RuleType::Step);1294                $this->endRule($context, RuleType::Scenario);1295                $this->endRule($context, RuleType::ScenarioDefinition);1296                $this->startRule($context, RuleType::ScenarioDefinition);1297                $this->startRule($context, RuleType::Tags);1298                $this->build($context, $token);1299                return 11;1300            }1301        }1302        if ($this->match_TagLine($context, $token)) {1303            $this->endRule($context, RuleType::DataTable);1304            $this->endRule($context, RuleType::Step);1305            $this->endRule($context, RuleType::Scenario);1306            $this->endRule($context, RuleType::ScenarioDefinition);1307            $this->startRule($context, RuleType::Rule);1308            $this->startRule($context, RuleType::RuleHeader);1309            $this->startRule($context, RuleType::Tags);1310            $this->build($context, $token);1311            return 22;1312        }1313        if ($this->match_ExamplesLine($context, $token)) {1314            $this->endRule($context, RuleType::DataTable);1315            $this->endRule($context, RuleType::Step);1316            $this->startRule($context, RuleType::ExamplesDefinition);1317            $this->startRule($context, RuleType::Examples);1318            $this->build($context, $token);1319            return 18;1320        }1321        if ($this->match_ScenarioLine($context, $token)) {1322            $this->endRule($context, RuleType::DataTable);1323            $this->endRule($context, RuleType::Step);1324            $this->endRule($context, RuleType::Scenario);1325            $this->endRule($context, RuleType::ScenarioDefinition);1326            $this->startRule($context, RuleType::ScenarioDefinition);1327            $this->startRule($context, RuleType::Scenario);1328            $this->build($context, $token);1329            return 12;1330        }1331        if ($this->match_RuleLine($context, $token)) {1332            $this->endRule($context, RuleType::DataTable);1333            $this->endRule($context, RuleType::Step);1334            $this->endRule($context, RuleType::Scenario);1335            $this->endRule($context, RuleType::ScenarioDefinition);1336            $this->startRule($context, RuleType::Rule);1337            $this->startRule($context, RuleType::RuleHeader);1338            $this->build($context, $token);1339            return 23;1340        }1341        if ($this->match_Comment($context, $token)) {1342            $this->build($context, $token);1343            return 16;1344        }1345        if ($this->match_Empty($context, $token)) {1346            $this->build($context, $token);1347            return 16;1348        }1349        $stateComment = "State: 16 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0";1350        $expectedTokens = ["#EOF", "#TableRow", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];1351        $error = $token->isEOF()1352                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1353                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1354        $this->addError($context, $error);1355        return 16;1356    }1357    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:01358    private function matchTokenAt_17(Token $token, ParserContext $context): int1359    {1360        if ($this->match_TagLine($context, $token)) {1361            $this->build($context, $token);1362            return 17;1363        }1364        if ($this->match_ExamplesLine($context, $token)) {1365            $this->endRule($context, RuleType::Tags);1366            $this->startRule($context, RuleType::Examples);1367            $this->build($context, $token);1368            return 18;1369        }1370        if ($this->match_Comment($context, $token)) {1371            $this->build($context, $token);1372            return 17;1373        }1374        if ($this->match_Empty($context, $token)) {1375            $this->build($context, $token);1376            return 17;1377        }1378        $stateComment = "State: 17 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0";1379        $expectedTokens = ["#TagLine", "#ExamplesLine", "#Comment", "#Empty"];1380        $error = $token->isEOF()1381                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1382                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1383        $this->addError($context, $error);1384        return 17;1385    }1386    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:01387    private function matchTokenAt_18(Token $token, ParserContext $context): int1388    {1389        if ($this->match_EOF($context, $token)) {1390            $this->endRule($context, RuleType::Examples);1391            $this->endRule($context, RuleType::ExamplesDefinition);1392            $this->endRule($context, RuleType::Scenario);1393            $this->endRule($context, RuleType::ScenarioDefinition);1394            $this->endRule($context, RuleType::Feature);1395            $this->build($context, $token);1396            return 42;1397        }1398        if ($this->match_Empty($context, $token)) {1399            $this->build($context, $token);1400            return 18;1401        }1402        if ($this->match_Comment($context, $token)) {1403            $this->build($context, $token);1404            return 20;1405        }1406        if ($this->match_TableRow($context, $token)) {1407            $this->startRule($context, RuleType::ExamplesTable);1408            $this->build($context, $token);1409            return 21;1410        }1411        if ($this->match_TagLine($context, $token)) {1412            if ($this->lookahead_1($context)) {1413                $this->endRule($context, RuleType::Examples);1414                $this->endRule($context, RuleType::ExamplesDefinition);1415                $this->startRule($context, RuleType::ExamplesDefinition);1416                $this->startRule($context, RuleType::Tags);1417                $this->build($context, $token);1418                return 17;1419            }1420        }1421        if ($this->match_TagLine($context, $token)) {1422            if ($this->lookahead_0($context)) {1423                $this->endRule($context, RuleType::Examples);1424                $this->endRule($context, RuleType::ExamplesDefinition);1425                $this->endRule($context, RuleType::Scenario);1426                $this->endRule($context, RuleType::ScenarioDefinition);1427                $this->startRule($context, RuleType::ScenarioDefinition);1428                $this->startRule($context, RuleType::Tags);1429                $this->build($context, $token);1430                return 11;1431            }1432        }1433        if ($this->match_TagLine($context, $token)) {1434            $this->endRule($context, RuleType::Examples);1435            $this->endRule($context, RuleType::ExamplesDefinition);1436            $this->endRule($context, RuleType::Scenario);1437            $this->endRule($context, RuleType::ScenarioDefinition);1438            $this->startRule($context, RuleType::Rule);1439            $this->startRule($context, RuleType::RuleHeader);1440            $this->startRule($context, RuleType::Tags);1441            $this->build($context, $token);1442            return 22;1443        }1444        if ($this->match_ExamplesLine($context, $token)) {1445            $this->endRule($context, RuleType::Examples);1446            $this->endRule($context, RuleType::ExamplesDefinition);1447            $this->startRule($context, RuleType::ExamplesDefinition);1448            $this->startRule($context, RuleType::Examples);1449            $this->build($context, $token);1450            return 18;1451        }1452        if ($this->match_ScenarioLine($context, $token)) {1453            $this->endRule($context, RuleType::Examples);1454            $this->endRule($context, RuleType::ExamplesDefinition);1455            $this->endRule($context, RuleType::Scenario);1456            $this->endRule($context, RuleType::ScenarioDefinition);1457            $this->startRule($context, RuleType::ScenarioDefinition);1458            $this->startRule($context, RuleType::Scenario);1459            $this->build($context, $token);1460            return 12;1461        }1462        if ($this->match_RuleLine($context, $token)) {1463            $this->endRule($context, RuleType::Examples);1464            $this->endRule($context, RuleType::ExamplesDefinition);1465            $this->endRule($context, RuleType::Scenario);1466            $this->endRule($context, RuleType::ScenarioDefinition);1467            $this->startRule($context, RuleType::Rule);1468            $this->startRule($context, RuleType::RuleHeader);1469            $this->build($context, $token);1470            return 23;1471        }1472        if ($this->match_Other($context, $token)) {1473            $this->startRule($context, RuleType::Description);1474            $this->build($context, $token);1475            return 19;1476        }1477        $stateComment = "State: 18 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0";1478        $expectedTokens = ["#EOF", "#Empty", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"];1479        $error = $token->isEOF()1480                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1481                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1482        $this->addError($context, $error);1483        return 18;1484    }1485    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>#Other:01486    private function matchTokenAt_19(Token $token, ParserContext $context): int1487    {1488        if ($this->match_EOF($context, $token)) {1489            $this->endRule($context, RuleType::Description);1490            $this->endRule($context, RuleType::Examples);1491            $this->endRule($context, RuleType::ExamplesDefinition);1492            $this->endRule($context, RuleType::Scenario);1493            $this->endRule($context, RuleType::ScenarioDefinition);1494            $this->endRule($context, RuleType::Feature);1495            $this->build($context, $token);1496            return 42;1497        }1498        if ($this->match_Comment($context, $token)) {1499            $this->endRule($context, RuleType::Description);1500            $this->build($context, $token);1501            return 20;1502        }1503        if ($this->match_TableRow($context, $token)) {1504            $this->endRule($context, RuleType::Description);1505            $this->startRule($context, RuleType::ExamplesTable);1506            $this->build($context, $token);1507            return 21;1508        }1509        if ($this->match_TagLine($context, $token)) {1510            if ($this->lookahead_1($context)) {1511                $this->endRule($context, RuleType::Description);1512                $this->endRule($context, RuleType::Examples);1513                $this->endRule($context, RuleType::ExamplesDefinition);1514                $this->startRule($context, RuleType::ExamplesDefinition);1515                $this->startRule($context, RuleType::Tags);1516                $this->build($context, $token);1517                return 17;1518            }1519        }1520        if ($this->match_TagLine($context, $token)) {1521            if ($this->lookahead_0($context)) {1522                $this->endRule($context, RuleType::Description);1523                $this->endRule($context, RuleType::Examples);1524                $this->endRule($context, RuleType::ExamplesDefinition);1525                $this->endRule($context, RuleType::Scenario);1526                $this->endRule($context, RuleType::ScenarioDefinition);1527                $this->startRule($context, RuleType::ScenarioDefinition);1528                $this->startRule($context, RuleType::Tags);1529                $this->build($context, $token);1530                return 11;1531            }1532        }1533        if ($this->match_TagLine($context, $token)) {1534            $this->endRule($context, RuleType::Description);1535            $this->endRule($context, RuleType::Examples);1536            $this->endRule($context, RuleType::ExamplesDefinition);1537            $this->endRule($context, RuleType::Scenario);1538            $this->endRule($context, RuleType::ScenarioDefinition);1539            $this->startRule($context, RuleType::Rule);1540            $this->startRule($context, RuleType::RuleHeader);1541            $this->startRule($context, RuleType::Tags);1542            $this->build($context, $token);1543            return 22;1544        }1545        if ($this->match_ExamplesLine($context, $token)) {1546            $this->endRule($context, RuleType::Description);1547            $this->endRule($context, RuleType::Examples);1548            $this->endRule($context, RuleType::ExamplesDefinition);1549            $this->startRule($context, RuleType::ExamplesDefinition);1550            $this->startRule($context, RuleType::Examples);1551            $this->build($context, $token);1552            return 18;1553        }1554        if ($this->match_ScenarioLine($context, $token)) {1555            $this->endRule($context, RuleType::Description);1556            $this->endRule($context, RuleType::Examples);1557            $this->endRule($context, RuleType::ExamplesDefinition);1558            $this->endRule($context, RuleType::Scenario);1559            $this->endRule($context, RuleType::ScenarioDefinition);1560            $this->startRule($context, RuleType::ScenarioDefinition);1561            $this->startRule($context, RuleType::Scenario);1562            $this->build($context, $token);1563            return 12;1564        }1565        if ($this->match_RuleLine($context, $token)) {1566            $this->endRule($context, RuleType::Description);1567            $this->endRule($context, RuleType::Examples);1568            $this->endRule($context, RuleType::ExamplesDefinition);1569            $this->endRule($context, RuleType::Scenario);1570            $this->endRule($context, RuleType::ScenarioDefinition);1571            $this->startRule($context, RuleType::Rule);1572            $this->startRule($context, RuleType::RuleHeader);1573            $this->build($context, $token);1574            return 23;1575        }1576        if ($this->match_Other($context, $token)) {1577            $this->build($context, $token);1578            return 19;1579        }1580        $stateComment = "State: 19 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>#Other:0";1581        $expectedTokens = ["#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"];1582        $error = $token->isEOF()1583                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1584                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1585        $this->addError($context, $error);1586        return 19;1587    }1588    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:2>#Comment:01589    private function matchTokenAt_20(Token $token, ParserContext $context): int1590    {1591        if ($this->match_EOF($context, $token)) {1592            $this->endRule($context, RuleType::Examples);1593            $this->endRule($context, RuleType::ExamplesDefinition);1594            $this->endRule($context, RuleType::Scenario);1595            $this->endRule($context, RuleType::ScenarioDefinition);1596            $this->endRule($context, RuleType::Feature);1597            $this->build($context, $token);1598            return 42;1599        }1600        if ($this->match_Comment($context, $token)) {1601            $this->build($context, $token);1602            return 20;1603        }1604        if ($this->match_TableRow($context, $token)) {1605            $this->startRule($context, RuleType::ExamplesTable);1606            $this->build($context, $token);1607            return 21;1608        }1609        if ($this->match_TagLine($context, $token)) {1610            if ($this->lookahead_1($context)) {1611                $this->endRule($context, RuleType::Examples);1612                $this->endRule($context, RuleType::ExamplesDefinition);1613                $this->startRule($context, RuleType::ExamplesDefinition);1614                $this->startRule($context, RuleType::Tags);1615                $this->build($context, $token);1616                return 17;1617            }1618        }1619        if ($this->match_TagLine($context, $token)) {1620            if ($this->lookahead_0($context)) {1621                $this->endRule($context, RuleType::Examples);1622                $this->endRule($context, RuleType::ExamplesDefinition);1623                $this->endRule($context, RuleType::Scenario);1624                $this->endRule($context, RuleType::ScenarioDefinition);1625                $this->startRule($context, RuleType::ScenarioDefinition);1626                $this->startRule($context, RuleType::Tags);1627                $this->build($context, $token);1628                return 11;1629            }1630        }1631        if ($this->match_TagLine($context, $token)) {1632            $this->endRule($context, RuleType::Examples);1633            $this->endRule($context, RuleType::ExamplesDefinition);1634            $this->endRule($context, RuleType::Scenario);1635            $this->endRule($context, RuleType::ScenarioDefinition);1636            $this->startRule($context, RuleType::Rule);1637            $this->startRule($context, RuleType::RuleHeader);1638            $this->startRule($context, RuleType::Tags);1639            $this->build($context, $token);1640            return 22;1641        }1642        if ($this->match_ExamplesLine($context, $token)) {1643            $this->endRule($context, RuleType::Examples);1644            $this->endRule($context, RuleType::ExamplesDefinition);1645            $this->startRule($context, RuleType::ExamplesDefinition);1646            $this->startRule($context, RuleType::Examples);1647            $this->build($context, $token);1648            return 18;1649        }1650        if ($this->match_ScenarioLine($context, $token)) {1651            $this->endRule($context, RuleType::Examples);1652            $this->endRule($context, RuleType::ExamplesDefinition);1653            $this->endRule($context, RuleType::Scenario);1654            $this->endRule($context, RuleType::ScenarioDefinition);1655            $this->startRule($context, RuleType::ScenarioDefinition);1656            $this->startRule($context, RuleType::Scenario);1657            $this->build($context, $token);1658            return 12;1659        }1660        if ($this->match_RuleLine($context, $token)) {1661            $this->endRule($context, RuleType::Examples);1662            $this->endRule($context, RuleType::ExamplesDefinition);1663            $this->endRule($context, RuleType::Scenario);1664            $this->endRule($context, RuleType::ScenarioDefinition);1665            $this->startRule($context, RuleType::Rule);1666            $this->startRule($context, RuleType::RuleHeader);1667            $this->build($context, $token);1668            return 23;1669        }1670        if ($this->match_Empty($context, $token)) {1671            $this->build($context, $token);1672            return 20;1673        }1674        $stateComment = "State: 20 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:2>#Comment:0";1675        $expectedTokens = ["#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Empty"];1676        $error = $token->isEOF()1677                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1678                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1679        $this->addError($context, $error);1680        return 20;1681    }1682    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:01683    private function matchTokenAt_21(Token $token, ParserContext $context): int1684    {1685        if ($this->match_EOF($context, $token)) {1686            $this->endRule($context, RuleType::ExamplesTable);1687            $this->endRule($context, RuleType::Examples);1688            $this->endRule($context, RuleType::ExamplesDefinition);1689            $this->endRule($context, RuleType::Scenario);1690            $this->endRule($context, RuleType::ScenarioDefinition);1691            $this->endRule($context, RuleType::Feature);1692            $this->build($context, $token);1693            return 42;1694        }1695        if ($this->match_TableRow($context, $token)) {1696            $this->build($context, $token);1697            return 21;1698        }1699        if ($this->match_TagLine($context, $token)) {1700            if ($this->lookahead_1($context)) {1701                $this->endRule($context, RuleType::ExamplesTable);1702                $this->endRule($context, RuleType::Examples);1703                $this->endRule($context, RuleType::ExamplesDefinition);1704                $this->startRule($context, RuleType::ExamplesDefinition);1705                $this->startRule($context, RuleType::Tags);1706                $this->build($context, $token);1707                return 17;1708            }1709        }1710        if ($this->match_TagLine($context, $token)) {1711            if ($this->lookahead_0($context)) {1712                $this->endRule($context, RuleType::ExamplesTable);1713                $this->endRule($context, RuleType::Examples);1714                $this->endRule($context, RuleType::ExamplesDefinition);1715                $this->endRule($context, RuleType::Scenario);1716                $this->endRule($context, RuleType::ScenarioDefinition);1717                $this->startRule($context, RuleType::ScenarioDefinition);1718                $this->startRule($context, RuleType::Tags);1719                $this->build($context, $token);1720                return 11;1721            }1722        }1723        if ($this->match_TagLine($context, $token)) {1724            $this->endRule($context, RuleType::ExamplesTable);1725            $this->endRule($context, RuleType::Examples);1726            $this->endRule($context, RuleType::ExamplesDefinition);1727            $this->endRule($context, RuleType::Scenario);1728            $this->endRule($context, RuleType::ScenarioDefinition);1729            $this->startRule($context, RuleType::Rule);1730            $this->startRule($context, RuleType::RuleHeader);1731            $this->startRule($context, RuleType::Tags);1732            $this->build($context, $token);1733            return 22;1734        }1735        if ($this->match_ExamplesLine($context, $token)) {1736            $this->endRule($context, RuleType::ExamplesTable);1737            $this->endRule($context, RuleType::Examples);1738            $this->endRule($context, RuleType::ExamplesDefinition);1739            $this->startRule($context, RuleType::ExamplesDefinition);1740            $this->startRule($context, RuleType::Examples);1741            $this->build($context, $token);1742            return 18;1743        }1744        if ($this->match_ScenarioLine($context, $token)) {1745            $this->endRule($context, RuleType::ExamplesTable);1746            $this->endRule($context, RuleType::Examples);1747            $this->endRule($context, RuleType::ExamplesDefinition);1748            $this->endRule($context, RuleType::Scenario);1749            $this->endRule($context, RuleType::ScenarioDefinition);1750            $this->startRule($context, RuleType::ScenarioDefinition);1751            $this->startRule($context, RuleType::Scenario);1752            $this->build($context, $token);1753            return 12;1754        }1755        if ($this->match_RuleLine($context, $token)) {1756            $this->endRule($context, RuleType::ExamplesTable);1757            $this->endRule($context, RuleType::Examples);1758            $this->endRule($context, RuleType::ExamplesDefinition);1759            $this->endRule($context, RuleType::Scenario);1760            $this->endRule($context, RuleType::ScenarioDefinition);1761            $this->startRule($context, RuleType::Rule);1762            $this->startRule($context, RuleType::RuleHeader);1763            $this->build($context, $token);1764            return 23;1765        }1766        if ($this->match_Comment($context, $token)) {1767            $this->build($context, $token);1768            return 21;1769        }1770        if ($this->match_Empty($context, $token)) {1771            $this->build($context, $token);1772            return 21;1773        }1774        $stateComment = "State: 21 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0";1775        $expectedTokens = ["#EOF", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];1776        $error = $token->isEOF()1777                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1778                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1779        $this->addError($context, $error);1780        return 21;1781    }1782    // GherkinDocument:0>Feature:3>Rule:0>RuleHeader:0>Tags:0>#TagLine:01783    private function matchTokenAt_22(Token $token, ParserContext $context): int1784    {1785        if ($this->match_TagLine($context, $token)) {1786            $this->build($context, $token);1787            return 22;1788        }1789        if ($this->match_RuleLine($context, $token)) {1790            $this->endRule($context, RuleType::Tags);1791            $this->build($context, $token);1792            return 23;1793        }1794        if ($this->match_Comment($context, $token)) {1795            $this->build($context, $token);1796            return 22;1797        }1798        if ($this->match_Empty($context, $token)) {1799            $this->build($context, $token);1800            return 22;1801        }1802        $stateComment = "State: 22 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:0>Tags:0>#TagLine:0";1803        $expectedTokens = ["#TagLine", "#RuleLine", "#Comment", "#Empty"];1804        $error = $token->isEOF()1805                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1806                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1807        $this->addError($context, $error);1808        return 22;1809    }1810    // GherkinDocument:0>Feature:3>Rule:0>RuleHeader:1>#RuleLine:01811    private function matchTokenAt_23(Token $token, ParserContext $context): int1812    {1813        if ($this->match_EOF($context, $token)) {1814            $this->endRule($context, RuleType::RuleHeader);1815            $this->endRule($context, RuleType::Rule);1816            $this->endRule($context, RuleType::Feature);1817            $this->build($context, $token);1818            return 42;1819        }1820        if ($this->match_Empty($context, $token)) {1821            $this->build($context, $token);1822            return 23;1823        }1824        if ($this->match_Comment($context, $token)) {1825            $this->build($context, $token);1826            return 25;1827        }1828        if ($this->match_BackgroundLine($context, $token)) {1829            $this->endRule($context, RuleType::RuleHeader);1830            $this->startRule($context, RuleType::Background);1831            $this->build($context, $token);1832            return 26;1833        }1834        if ($this->match_TagLine($context, $token)) {1835            if ($this->lookahead_0($context)) {1836                $this->endRule($context, RuleType::RuleHeader);1837                $this->startRule($context, RuleType::ScenarioDefinition);1838                $this->startRule($context, RuleType::Tags);1839                $this->build($context, $token);1840                return 31;1841            }1842        }1843        if ($this->match_TagLine($context, $token)) {1844            $this->endRule($context, RuleType::RuleHeader);1845            $this->endRule($context, RuleType::Rule);1846            $this->startRule($context, RuleType::Rule);1847            $this->startRule($context, RuleType::RuleHeader);1848            $this->startRule($context, RuleType::Tags);1849            $this->build($context, $token);1850            return 22;1851        }1852        if ($this->match_ScenarioLine($context, $token)) {1853            $this->endRule($context, RuleType::RuleHeader);1854            $this->startRule($context, RuleType::ScenarioDefinition);1855            $this->startRule($context, RuleType::Scenario);1856            $this->build($context, $token);1857            return 32;1858        }1859        if ($this->match_RuleLine($context, $token)) {1860            $this->endRule($context, RuleType::RuleHeader);1861            $this->endRule($context, RuleType::Rule);1862            $this->startRule($context, RuleType::Rule);1863            $this->startRule($context, RuleType::RuleHeader);1864            $this->build($context, $token);1865            return 23;1866        }1867        if ($this->match_Other($context, $token)) {1868            $this->startRule($context, RuleType::Description);1869            $this->build($context, $token);1870            return 24;1871        }1872        $stateComment = "State: 23 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:1>#RuleLine:0";1873        $expectedTokens = ["#EOF", "#Empty", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"];1874        $error = $token->isEOF()1875                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1876                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1877        $this->addError($context, $error);1878        return 23;1879    }1880    // GherkinDocument:0>Feature:3>Rule:0>RuleHeader:2>DescriptionHelper:1>Description:0>#Other:01881    private function matchTokenAt_24(Token $token, ParserContext $context): int1882    {1883        if ($this->match_EOF($context, $token)) {1884            $this->endRule($context, RuleType::Description);1885            $this->endRule($context, RuleType::RuleHeader);1886            $this->endRule($context, RuleType::Rule);1887            $this->endRule($context, RuleType::Feature);1888            $this->build($context, $token);1889            return 42;1890        }1891        if ($this->match_Comment($context, $token)) {1892            $this->endRule($context, RuleType::Description);1893            $this->build($context, $token);1894            return 25;1895        }1896        if ($this->match_BackgroundLine($context, $token)) {1897            $this->endRule($context, RuleType::Description);1898            $this->endRule($context, RuleType::RuleHeader);1899            $this->startRule($context, RuleType::Background);1900            $this->build($context, $token);1901            return 26;1902        }1903        if ($this->match_TagLine($context, $token)) {1904            if ($this->lookahead_0($context)) {1905                $this->endRule($context, RuleType::Description);1906                $this->endRule($context, RuleType::RuleHeader);1907                $this->startRule($context, RuleType::ScenarioDefinition);1908                $this->startRule($context, RuleType::Tags);1909                $this->build($context, $token);1910                return 31;1911            }1912        }1913        if ($this->match_TagLine($context, $token)) {1914            $this->endRule($context, RuleType::Description);1915            $this->endRule($context, RuleType::RuleHeader);1916            $this->endRule($context, RuleType::Rule);1917            $this->startRule($context, RuleType::Rule);1918            $this->startRule($context, RuleType::RuleHeader);1919            $this->startRule($context, RuleType::Tags);1920            $this->build($context, $token);1921            return 22;1922        }1923        if ($this->match_ScenarioLine($context, $token)) {1924            $this->endRule($context, RuleType::Description);1925            $this->endRule($context, RuleType::RuleHeader);1926            $this->startRule($context, RuleType::ScenarioDefinition);1927            $this->startRule($context, RuleType::Scenario);1928            $this->build($context, $token);1929            return 32;1930        }1931        if ($this->match_RuleLine($context, $token)) {1932            $this->endRule($context, RuleType::Description);1933            $this->endRule($context, RuleType::RuleHeader);1934            $this->endRule($context, RuleType::Rule);1935            $this->startRule($context, RuleType::Rule);1936            $this->startRule($context, RuleType::RuleHeader);1937            $this->build($context, $token);1938            return 23;1939        }1940        if ($this->match_Other($context, $token)) {1941            $this->build($context, $token);1942            return 24;1943        }1944        $stateComment = "State: 24 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:2>DescriptionHelper:1>Description:0>#Other:0";1945        $expectedTokens = ["#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"];1946        $error = $token->isEOF()1947                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)1948                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);1949        $this->addError($context, $error);1950        return 24;1951    }1952    // GherkinDocument:0>Feature:3>Rule:0>RuleHeader:2>DescriptionHelper:2>#Comment:01953    private function matchTokenAt_25(Token $token, ParserContext $context): int1954    {1955        if ($this->match_EOF($context, $token)) {1956            $this->endRule($context, RuleType::RuleHeader);1957            $this->endRule($context, RuleType::Rule);1958            $this->endRule($context, RuleType::Feature);1959            $this->build($context, $token);1960            return 42;1961        }1962        if ($this->match_Comment($context, $token)) {1963            $this->build($context, $token);1964            return 25;1965        }1966        if ($this->match_BackgroundLine($context, $token)) {1967            $this->endRule($context, RuleType::RuleHeader);1968            $this->startRule($context, RuleType::Background);1969            $this->build($context, $token);1970            return 26;1971        }1972        if ($this->match_TagLine($context, $token)) {1973            if ($this->lookahead_0($context)) {1974                $this->endRule($context, RuleType::RuleHeader);1975                $this->startRule($context, RuleType::ScenarioDefinition);1976                $this->startRule($context, RuleType::Tags);1977                $this->build($context, $token);1978                return 31;1979            }1980        }1981        if ($this->match_TagLine($context, $token)) {1982            $this->endRule($context, RuleType::RuleHeader);1983            $this->endRule($context, RuleType::Rule);1984            $this->startRule($context, RuleType::Rule);1985            $this->startRule($context, RuleType::RuleHeader);1986            $this->startRule($context, RuleType::Tags);1987            $this->build($context, $token);1988            return 22;1989        }1990        if ($this->match_ScenarioLine($context, $token)) {1991            $this->endRule($context, RuleType::RuleHeader);1992            $this->startRule($context, RuleType::ScenarioDefinition);1993            $this->startRule($context, RuleType::Scenario);1994            $this->build($context, $token);1995            return 32;1996        }1997        if ($this->match_RuleLine($context, $token)) {1998            $this->endRule($context, RuleType::RuleHeader);1999            $this->endRule($context, RuleType::Rule);2000            $this->startRule($context, RuleType::Rule);2001            $this->startRule($context, RuleType::RuleHeader);2002            $this->build($context, $token);2003            return 23;2004        }2005        if ($this->match_Empty($context, $token)) {2006            $this->build($context, $token);2007            return 25;2008        }2009        $stateComment = "State: 25 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:2>DescriptionHelper:2>#Comment:0";2010        $expectedTokens = ["#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Empty"];2011        $error = $token->isEOF()2012                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2013                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2014        $this->addError($context, $error);2015        return 25;2016    }2017    // GherkinDocument:0>Feature:3>Rule:1>Background:0>#BackgroundLine:02018    private function matchTokenAt_26(Token $token, ParserContext $context): int2019    {2020        if ($this->match_EOF($context, $token)) {2021            $this->endRule($context, RuleType::Background);2022            $this->endRule($context, RuleType::Rule);2023            $this->endRule($context, RuleType::Feature);2024            $this->build($context, $token);2025            return 42;2026        }2027        if ($this->match_Empty($context, $token)) {2028            $this->build($context, $token);2029            return 26;2030        }2031        if ($this->match_Comment($context, $token)) {2032            $this->build($context, $token);2033            return 28;2034        }2035        if ($this->match_StepLine($context, $token)) {2036            $this->startRule($context, RuleType::Step);2037            $this->build($context, $token);2038            return 29;2039        }2040        if ($this->match_TagLine($context, $token)) {2041            if ($this->lookahead_0($context)) {2042                $this->endRule($context, RuleType::Background);2043                $this->startRule($context, RuleType::ScenarioDefinition);2044                $this->startRule($context, RuleType::Tags);2045                $this->build($context, $token);2046                return 31;2047            }2048        }2049        if ($this->match_TagLine($context, $token)) {2050            $this->endRule($context, RuleType::Background);2051            $this->endRule($context, RuleType::Rule);2052            $this->startRule($context, RuleType::Rule);2053            $this->startRule($context, RuleType::RuleHeader);2054            $this->startRule($context, RuleType::Tags);2055            $this->build($context, $token);2056            return 22;2057        }2058        if ($this->match_ScenarioLine($context, $token)) {2059            $this->endRule($context, RuleType::Background);2060            $this->startRule($context, RuleType::ScenarioDefinition);2061            $this->startRule($context, RuleType::Scenario);2062            $this->build($context, $token);2063            return 32;2064        }2065        if ($this->match_RuleLine($context, $token)) {2066            $this->endRule($context, RuleType::Background);2067            $this->endRule($context, RuleType::Rule);2068            $this->startRule($context, RuleType::Rule);2069            $this->startRule($context, RuleType::RuleHeader);2070            $this->build($context, $token);2071            return 23;2072        }2073        if ($this->match_Other($context, $token)) {2074            $this->startRule($context, RuleType::Description);2075            $this->build($context, $token);2076            return 27;2077        }2078        $stateComment = "State: 26 - GherkinDocument:0>Feature:3>Rule:1>Background:0>#BackgroundLine:0";2079        $expectedTokens = ["#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"];2080        $error = $token->isEOF()2081                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2082                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2083        $this->addError($context, $error);2084        return 26;2085    }2086    // GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:1>Description:0>#Other:02087    private function matchTokenAt_27(Token $token, ParserContext $context): int2088    {2089        if ($this->match_EOF($context, $token)) {2090            $this->endRule($context, RuleType::Description);2091            $this->endRule($context, RuleType::Background);2092            $this->endRule($context, RuleType::Rule);2093            $this->endRule($context, RuleType::Feature);2094            $this->build($context, $token);2095            return 42;2096        }2097        if ($this->match_Comment($context, $token)) {2098            $this->endRule($context, RuleType::Description);2099            $this->build($context, $token);2100            return 28;2101        }2102        if ($this->match_StepLine($context, $token)) {2103            $this->endRule($context, RuleType::Description);2104            $this->startRule($context, RuleType::Step);2105            $this->build($context, $token);2106            return 29;2107        }2108        if ($this->match_TagLine($context, $token)) {2109            if ($this->lookahead_0($context)) {2110                $this->endRule($context, RuleType::Description);2111                $this->endRule($context, RuleType::Background);2112                $this->startRule($context, RuleType::ScenarioDefinition);2113                $this->startRule($context, RuleType::Tags);2114                $this->build($context, $token);2115                return 31;2116            }2117        }2118        if ($this->match_TagLine($context, $token)) {2119            $this->endRule($context, RuleType::Description);2120            $this->endRule($context, RuleType::Background);2121            $this->endRule($context, RuleType::Rule);2122            $this->startRule($context, RuleType::Rule);2123            $this->startRule($context, RuleType::RuleHeader);2124            $this->startRule($context, RuleType::Tags);2125            $this->build($context, $token);2126            return 22;2127        }2128        if ($this->match_ScenarioLine($context, $token)) {2129            $this->endRule($context, RuleType::Description);2130            $this->endRule($context, RuleType::Background);2131            $this->startRule($context, RuleType::ScenarioDefinition);2132            $this->startRule($context, RuleType::Scenario);2133            $this->build($context, $token);2134            return 32;2135        }2136        if ($this->match_RuleLine($context, $token)) {2137            $this->endRule($context, RuleType::Description);2138            $this->endRule($context, RuleType::Background);2139            $this->endRule($context, RuleType::Rule);2140            $this->startRule($context, RuleType::Rule);2141            $this->startRule($context, RuleType::RuleHeader);2142            $this->build($context, $token);2143            return 23;2144        }2145        if ($this->match_Other($context, $token)) {2146            $this->build($context, $token);2147            return 27;2148        }2149        $stateComment = "State: 27 - GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:1>Description:0>#Other:0";2150        $expectedTokens = ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"];2151        $error = $token->isEOF()2152                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2153                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2154        $this->addError($context, $error);2155        return 27;2156    }2157    // GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:2>#Comment:02158    private function matchTokenAt_28(Token $token, ParserContext $context): int2159    {2160        if ($this->match_EOF($context, $token)) {2161            $this->endRule($context, RuleType::Background);2162            $this->endRule($context, RuleType::Rule);2163            $this->endRule($context, RuleType::Feature);2164            $this->build($context, $token);2165            return 42;2166        }2167        if ($this->match_Comment($context, $token)) {2168            $this->build($context, $token);2169            return 28;2170        }2171        if ($this->match_StepLine($context, $token)) {2172            $this->startRule($context, RuleType::Step);2173            $this->build($context, $token);2174            return 29;2175        }2176        if ($this->match_TagLine($context, $token)) {2177            if ($this->lookahead_0($context)) {2178                $this->endRule($context, RuleType::Background);2179                $this->startRule($context, RuleType::ScenarioDefinition);2180                $this->startRule($context, RuleType::Tags);2181                $this->build($context, $token);2182                return 31;2183            }2184        }2185        if ($this->match_TagLine($context, $token)) {2186            $this->endRule($context, RuleType::Background);2187            $this->endRule($context, RuleType::Rule);2188            $this->startRule($context, RuleType::Rule);2189            $this->startRule($context, RuleType::RuleHeader);2190            $this->startRule($context, RuleType::Tags);2191            $this->build($context, $token);2192            return 22;2193        }2194        if ($this->match_ScenarioLine($context, $token)) {2195            $this->endRule($context, RuleType::Background);2196            $this->startRule($context, RuleType::ScenarioDefinition);2197            $this->startRule($context, RuleType::Scenario);2198            $this->build($context, $token);2199            return 32;2200        }2201        if ($this->match_RuleLine($context, $token)) {2202            $this->endRule($context, RuleType::Background);2203            $this->endRule($context, RuleType::Rule);2204            $this->startRule($context, RuleType::Rule);2205            $this->startRule($context, RuleType::RuleHeader);2206            $this->build($context, $token);2207            return 23;2208        }2209        if ($this->match_Empty($context, $token)) {2210            $this->build($context, $token);2211            return 28;2212        }2213        $stateComment = "State: 28 - GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:2>#Comment:0";2214        $expectedTokens = ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Empty"];2215        $error = $token->isEOF()2216                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2217                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2218        $this->addError($context, $error);2219        return 28;2220    }2221    // GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:0>#StepLine:02222    private function matchTokenAt_29(Token $token, ParserContext $context): int2223    {2224        if ($this->match_EOF($context, $token)) {2225            $this->endRule($context, RuleType::Step);2226            $this->endRule($context, RuleType::Background);2227            $this->endRule($context, RuleType::Rule);2228            $this->endRule($context, RuleType::Feature);2229            $this->build($context, $token);2230            return 42;2231        }2232        if ($this->match_TableRow($context, $token)) {2233            $this->startRule($context, RuleType::DataTable);2234            $this->build($context, $token);2235            return 30;2236        }2237        if ($this->match_DocStringSeparator($context, $token)) {2238            $this->startRule($context, RuleType::DocString);2239            $this->build($context, $token);2240            return 45;2241        }2242        if ($this->match_StepLine($context, $token)) {2243            $this->endRule($context, RuleType::Step);2244            $this->startRule($context, RuleType::Step);2245            $this->build($context, $token);2246            return 29;2247        }2248        if ($this->match_TagLine($context, $token)) {2249            if ($this->lookahead_0($context)) {2250                $this->endRule($context, RuleType::Step);2251                $this->endRule($context, RuleType::Background);2252                $this->startRule($context, RuleType::ScenarioDefinition);2253                $this->startRule($context, RuleType::Tags);2254                $this->build($context, $token);2255                return 31;2256            }2257        }2258        if ($this->match_TagLine($context, $token)) {2259            $this->endRule($context, RuleType::Step);2260            $this->endRule($context, RuleType::Background);2261            $this->endRule($context, RuleType::Rule);2262            $this->startRule($context, RuleType::Rule);2263            $this->startRule($context, RuleType::RuleHeader);2264            $this->startRule($context, RuleType::Tags);2265            $this->build($context, $token);2266            return 22;2267        }2268        if ($this->match_ScenarioLine($context, $token)) {2269            $this->endRule($context, RuleType::Step);2270            $this->endRule($context, RuleType::Background);2271            $this->startRule($context, RuleType::ScenarioDefinition);2272            $this->startRule($context, RuleType::Scenario);2273            $this->build($context, $token);2274            return 32;2275        }2276        if ($this->match_RuleLine($context, $token)) {2277            $this->endRule($context, RuleType::Step);2278            $this->endRule($context, RuleType::Background);2279            $this->endRule($context, RuleType::Rule);2280            $this->startRule($context, RuleType::Rule);2281            $this->startRule($context, RuleType::RuleHeader);2282            $this->build($context, $token);2283            return 23;2284        }2285        if ($this->match_Comment($context, $token)) {2286            $this->build($context, $token);2287            return 29;2288        }2289        if ($this->match_Empty($context, $token)) {2290            $this->build($context, $token);2291            return 29;2292        }2293        $stateComment = "State: 29 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:0>#StepLine:0";2294        $expectedTokens = ["#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];2295        $error = $token->isEOF()2296                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2297                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2298        $this->addError($context, $error);2299        return 29;2300    }2301    // GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:02302    private function matchTokenAt_30(Token $token, ParserContext $context): int2303    {2304        if ($this->match_EOF($context, $token)) {2305            $this->endRule($context, RuleType::DataTable);2306            $this->endRule($context, RuleType::Step);2307            $this->endRule($context, RuleType::Background);2308            $this->endRule($context, RuleType::Rule);2309            $this->endRule($context, RuleType::Feature);2310            $this->build($context, $token);2311            return 42;2312        }2313        if ($this->match_TableRow($context, $token)) {2314            $this->build($context, $token);2315            return 30;2316        }2317        if ($this->match_StepLine($context, $token)) {2318            $this->endRule($context, RuleType::DataTable);2319            $this->endRule($context, RuleType::Step);2320            $this->startRule($context, RuleType::Step);2321            $this->build($context, $token);2322            return 29;2323        }2324        if ($this->match_TagLine($context, $token)) {2325            if ($this->lookahead_0($context)) {2326                $this->endRule($context, RuleType::DataTable);2327                $this->endRule($context, RuleType::Step);2328                $this->endRule($context, RuleType::Background);2329                $this->startRule($context, RuleType::ScenarioDefinition);2330                $this->startRule($context, RuleType::Tags);2331                $this->build($context, $token);2332                return 31;2333            }2334        }2335        if ($this->match_TagLine($context, $token)) {2336            $this->endRule($context, RuleType::DataTable);2337            $this->endRule($context, RuleType::Step);2338            $this->endRule($context, RuleType::Background);2339            $this->endRule($context, RuleType::Rule);2340            $this->startRule($context, RuleType::Rule);2341            $this->startRule($context, RuleType::RuleHeader);2342            $this->startRule($context, RuleType::Tags);2343            $this->build($context, $token);2344            return 22;2345        }2346        if ($this->match_ScenarioLine($context, $token)) {2347            $this->endRule($context, RuleType::DataTable);2348            $this->endRule($context, RuleType::Step);2349            $this->endRule($context, RuleType::Background);2350            $this->startRule($context, RuleType::ScenarioDefinition);2351            $this->startRule($context, RuleType::Scenario);2352            $this->build($context, $token);2353            return 32;2354        }2355        if ($this->match_RuleLine($context, $token)) {2356            $this->endRule($context, RuleType::DataTable);2357            $this->endRule($context, RuleType::Step);2358            $this->endRule($context, RuleType::Background);2359            $this->endRule($context, RuleType::Rule);2360            $this->startRule($context, RuleType::Rule);2361            $this->startRule($context, RuleType::RuleHeader);2362            $this->build($context, $token);2363            return 23;2364        }2365        if ($this->match_Comment($context, $token)) {2366            $this->build($context, $token);2367            return 30;2368        }2369        if ($this->match_Empty($context, $token)) {2370            $this->build($context, $token);2371            return 30;2372        }2373        $stateComment = "State: 30 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0";2374        $expectedTokens = ["#EOF", "#TableRow", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];2375        $error = $token->isEOF()2376                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2377                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2378        $this->addError($context, $error);2379        return 30;2380    }2381    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:0>Tags:0>#TagLine:02382    private function matchTokenAt_31(Token $token, ParserContext $context): int2383    {2384        if ($this->match_TagLine($context, $token)) {2385            $this->build($context, $token);2386            return 31;2387        }2388        if ($this->match_ScenarioLine($context, $token)) {2389            $this->endRule($context, RuleType::Tags);2390            $this->startRule($context, RuleType::Scenario);2391            $this->build($context, $token);2392            return 32;2393        }2394        if ($this->match_Comment($context, $token)) {2395            $this->build($context, $token);2396            return 31;2397        }2398        if ($this->match_Empty($context, $token)) {2399            $this->build($context, $token);2400            return 31;2401        }2402        $stateComment = "State: 31 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:0>Tags:0>#TagLine:0";2403        $expectedTokens = ["#TagLine", "#ScenarioLine", "#Comment", "#Empty"];2404        $error = $token->isEOF()2405                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2406                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2407        $this->addError($context, $error);2408        return 31;2409    }2410    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:02411    private function matchTokenAt_32(Token $token, ParserContext $context): int2412    {2413        if ($this->match_EOF($context, $token)) {2414            $this->endRule($context, RuleType::Scenario);2415            $this->endRule($context, RuleType::ScenarioDefinition);2416            $this->endRule($context, RuleType::Rule);2417            $this->endRule($context, RuleType::Feature);2418            $this->build($context, $token);2419            return 42;2420        }2421        if ($this->match_Empty($context, $token)) {2422            $this->build($context, $token);2423            return 32;2424        }2425        if ($this->match_Comment($context, $token)) {2426            $this->build($context, $token);2427            return 34;2428        }2429        if ($this->match_StepLine($context, $token)) {2430            $this->startRule($context, RuleType::Step);2431            $this->build($context, $token);2432            return 35;2433        }2434        if ($this->match_TagLine($context, $token)) {2435            if ($this->lookahead_1($context)) {2436                $this->startRule($context, RuleType::ExamplesDefinition);2437                $this->startRule($context, RuleType::Tags);2438                $this->build($context, $token);2439                return 37;2440            }2441        }2442        if ($this->match_TagLine($context, $token)) {2443            if ($this->lookahead_0($context)) {2444                $this->endRule($context, RuleType::Scenario);2445                $this->endRule($context, RuleType::ScenarioDefinition);2446                $this->startRule($context, RuleType::ScenarioDefinition);2447                $this->startRule($context, RuleType::Tags);2448                $this->build($context, $token);2449                return 31;2450            }2451        }2452        if ($this->match_TagLine($context, $token)) {2453            $this->endRule($context, RuleType::Scenario);2454            $this->endRule($context, RuleType::ScenarioDefinition);2455            $this->endRule($context, RuleType::Rule);2456            $this->startRule($context, RuleType::Rule);2457            $this->startRule($context, RuleType::RuleHeader);2458            $this->startRule($context, RuleType::Tags);2459            $this->build($context, $token);2460            return 22;2461        }2462        if ($this->match_ExamplesLine($context, $token)) {2463            $this->startRule($context, RuleType::ExamplesDefinition);2464            $this->startRule($context, RuleType::Examples);2465            $this->build($context, $token);2466            return 38;2467        }2468        if ($this->match_ScenarioLine($context, $token)) {2469            $this->endRule($context, RuleType::Scenario);2470            $this->endRule($context, RuleType::ScenarioDefinition);2471            $this->startRule($context, RuleType::ScenarioDefinition);2472            $this->startRule($context, RuleType::Scenario);2473            $this->build($context, $token);2474            return 32;2475        }2476        if ($this->match_RuleLine($context, $token)) {2477            $this->endRule($context, RuleType::Scenario);2478            $this->endRule($context, RuleType::ScenarioDefinition);2479            $this->endRule($context, RuleType::Rule);2480            $this->startRule($context, RuleType::Rule);2481            $this->startRule($context, RuleType::RuleHeader);2482            $this->build($context, $token);2483            return 23;2484        }2485        if ($this->match_Other($context, $token)) {2486            $this->startRule($context, RuleType::Description);2487            $this->build($context, $token);2488            return 33;2489        }2490        $stateComment = "State: 32 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0";2491        $expectedTokens = ["#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"];2492        $error = $token->isEOF()2493                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2494                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2495        $this->addError($context, $error);2496        return 32;2497    }2498    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>#Other:02499    private function matchTokenAt_33(Token $token, ParserContext $context): int2500    {2501        if ($this->match_EOF($context, $token)) {2502            $this->endRule($context, RuleType::Description);2503            $this->endRule($context, RuleType::Scenario);2504            $this->endRule($context, RuleType::ScenarioDefinition);2505            $this->endRule($context, RuleType::Rule);2506            $this->endRule($context, RuleType::Feature);2507            $this->build($context, $token);2508            return 42;2509        }2510        if ($this->match_Comment($context, $token)) {2511            $this->endRule($context, RuleType::Description);2512            $this->build($context, $token);2513            return 34;2514        }2515        if ($this->match_StepLine($context, $token)) {2516            $this->endRule($context, RuleType::Description);2517            $this->startRule($context, RuleType::Step);2518            $this->build($context, $token);2519            return 35;2520        }2521        if ($this->match_TagLine($context, $token)) {2522            if ($this->lookahead_1($context)) {2523                $this->endRule($context, RuleType::Description);2524                $this->startRule($context, RuleType::ExamplesDefinition);2525                $this->startRule($context, RuleType::Tags);2526                $this->build($context, $token);2527                return 37;2528            }2529        }2530        if ($this->match_TagLine($context, $token)) {2531            if ($this->lookahead_0($context)) {2532                $this->endRule($context, RuleType::Description);2533                $this->endRule($context, RuleType::Scenario);2534                $this->endRule($context, RuleType::ScenarioDefinition);2535                $this->startRule($context, RuleType::ScenarioDefinition);2536                $this->startRule($context, RuleType::Tags);2537                $this->build($context, $token);2538                return 31;2539            }2540        }2541        if ($this->match_TagLine($context, $token)) {2542            $this->endRule($context, RuleType::Description);2543            $this->endRule($context, RuleType::Scenario);2544            $this->endRule($context, RuleType::ScenarioDefinition);2545            $this->endRule($context, RuleType::Rule);2546            $this->startRule($context, RuleType::Rule);2547            $this->startRule($context, RuleType::RuleHeader);2548            $this->startRule($context, RuleType::Tags);2549            $this->build($context, $token);2550            return 22;2551        }2552        if ($this->match_ExamplesLine($context, $token)) {2553            $this->endRule($context, RuleType::Description);2554            $this->startRule($context, RuleType::ExamplesDefinition);2555            $this->startRule($context, RuleType::Examples);2556            $this->build($context, $token);2557            return 38;2558        }2559        if ($this->match_ScenarioLine($context, $token)) {2560            $this->endRule($context, RuleType::Description);2561            $this->endRule($context, RuleType::Scenario);2562            $this->endRule($context, RuleType::ScenarioDefinition);2563            $this->startRule($context, RuleType::ScenarioDefinition);2564            $this->startRule($context, RuleType::Scenario);2565            $this->build($context, $token);2566            return 32;2567        }2568        if ($this->match_RuleLine($context, $token)) {2569            $this->endRule($context, RuleType::Description);2570            $this->endRule($context, RuleType::Scenario);2571            $this->endRule($context, RuleType::ScenarioDefinition);2572            $this->endRule($context, RuleType::Rule);2573            $this->startRule($context, RuleType::Rule);2574            $this->startRule($context, RuleType::RuleHeader);2575            $this->build($context, $token);2576            return 23;2577        }2578        if ($this->match_Other($context, $token)) {2579            $this->build($context, $token);2580            return 33;2581        }2582        $stateComment = "State: 33 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>#Other:0";2583        $expectedTokens = ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"];2584        $error = $token->isEOF()2585                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2586                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2587        $this->addError($context, $error);2588        return 33;2589    }2590    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:2>#Comment:02591    private function matchTokenAt_34(Token $token, ParserContext $context): int2592    {2593        if ($this->match_EOF($context, $token)) {2594            $this->endRule($context, RuleType::Scenario);2595            $this->endRule($context, RuleType::ScenarioDefinition);2596            $this->endRule($context, RuleType::Rule);2597            $this->endRule($context, RuleType::Feature);2598            $this->build($context, $token);2599            return 42;2600        }2601        if ($this->match_Comment($context, $token)) {2602            $this->build($context, $token);2603            return 34;2604        }2605        if ($this->match_StepLine($context, $token)) {2606            $this->startRule($context, RuleType::Step);2607            $this->build($context, $token);2608            return 35;2609        }2610        if ($this->match_TagLine($context, $token)) {2611            if ($this->lookahead_1($context)) {2612                $this->startRule($context, RuleType::ExamplesDefinition);2613                $this->startRule($context, RuleType::Tags);2614                $this->build($context, $token);2615                return 37;2616            }2617        }2618        if ($this->match_TagLine($context, $token)) {2619            if ($this->lookahead_0($context)) {2620                $this->endRule($context, RuleType::Scenario);2621                $this->endRule($context, RuleType::ScenarioDefinition);2622                $this->startRule($context, RuleType::ScenarioDefinition);2623                $this->startRule($context, RuleType::Tags);2624                $this->build($context, $token);2625                return 31;2626            }2627        }2628        if ($this->match_TagLine($context, $token)) {2629            $this->endRule($context, RuleType::Scenario);2630            $this->endRule($context, RuleType::ScenarioDefinition);2631            $this->endRule($context, RuleType::Rule);2632            $this->startRule($context, RuleType::Rule);2633            $this->startRule($context, RuleType::RuleHeader);2634            $this->startRule($context, RuleType::Tags);2635            $this->build($context, $token);2636            return 22;2637        }2638        if ($this->match_ExamplesLine($context, $token)) {2639            $this->startRule($context, RuleType::ExamplesDefinition);2640            $this->startRule($context, RuleType::Examples);2641            $this->build($context, $token);2642            return 38;2643        }2644        if ($this->match_ScenarioLine($context, $token)) {2645            $this->endRule($context, RuleType::Scenario);2646            $this->endRule($context, RuleType::ScenarioDefinition);2647            $this->startRule($context, RuleType::ScenarioDefinition);2648            $this->startRule($context, RuleType::Scenario);2649            $this->build($context, $token);2650            return 32;2651        }2652        if ($this->match_RuleLine($context, $token)) {2653            $this->endRule($context, RuleType::Scenario);2654            $this->endRule($context, RuleType::ScenarioDefinition);2655            $this->endRule($context, RuleType::Rule);2656            $this->startRule($context, RuleType::Rule);2657            $this->startRule($context, RuleType::RuleHeader);2658            $this->build($context, $token);2659            return 23;2660        }2661        if ($this->match_Empty($context, $token)) {2662            $this->build($context, $token);2663            return 34;2664        }2665        $stateComment = "State: 34 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:2>#Comment:0";2666        $expectedTokens = ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Empty"];2667        $error = $token->isEOF()2668                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2669                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2670        $this->addError($context, $error);2671        return 34;2672    }2673    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:02674    private function matchTokenAt_35(Token $token, ParserContext $context): int2675    {2676        if ($this->match_EOF($context, $token)) {2677            $this->endRule($context, RuleType::Step);2678            $this->endRule($context, RuleType::Scenario);2679            $this->endRule($context, RuleType::ScenarioDefinition);2680            $this->endRule($context, RuleType::Rule);2681            $this->endRule($context, RuleType::Feature);2682            $this->build($context, $token);2683            return 42;2684        }2685        if ($this->match_TableRow($context, $token)) {2686            $this->startRule($context, RuleType::DataTable);2687            $this->build($context, $token);2688            return 36;2689        }2690        if ($this->match_DocStringSeparator($context, $token)) {2691            $this->startRule($context, RuleType::DocString);2692            $this->build($context, $token);2693            return 43;2694        }2695        if ($this->match_StepLine($context, $token)) {2696            $this->endRule($context, RuleType::Step);2697            $this->startRule($context, RuleType::Step);2698            $this->build($context, $token);2699            return 35;2700        }2701        if ($this->match_TagLine($context, $token)) {2702            if ($this->lookahead_1($context)) {2703                $this->endRule($context, RuleType::Step);2704                $this->startRule($context, RuleType::ExamplesDefinition);2705                $this->startRule($context, RuleType::Tags);2706                $this->build($context, $token);2707                return 37;2708            }2709        }2710        if ($this->match_TagLine($context, $token)) {2711            if ($this->lookahead_0($context)) {2712                $this->endRule($context, RuleType::Step);2713                $this->endRule($context, RuleType::Scenario);2714                $this->endRule($context, RuleType::ScenarioDefinition);2715                $this->startRule($context, RuleType::ScenarioDefinition);2716                $this->startRule($context, RuleType::Tags);2717                $this->build($context, $token);2718                return 31;2719            }2720        }2721        if ($this->match_TagLine($context, $token)) {2722            $this->endRule($context, RuleType::Step);2723            $this->endRule($context, RuleType::Scenario);2724            $this->endRule($context, RuleType::ScenarioDefinition);2725            $this->endRule($context, RuleType::Rule);2726            $this->startRule($context, RuleType::Rule);2727            $this->startRule($context, RuleType::RuleHeader);2728            $this->startRule($context, RuleType::Tags);2729            $this->build($context, $token);2730            return 22;2731        }2732        if ($this->match_ExamplesLine($context, $token)) {2733            $this->endRule($context, RuleType::Step);2734            $this->startRule($context, RuleType::ExamplesDefinition);2735            $this->startRule($context, RuleType::Examples);2736            $this->build($context, $token);2737            return 38;2738        }2739        if ($this->match_ScenarioLine($context, $token)) {2740            $this->endRule($context, RuleType::Step);2741            $this->endRule($context, RuleType::Scenario);2742            $this->endRule($context, RuleType::ScenarioDefinition);2743            $this->startRule($context, RuleType::ScenarioDefinition);2744            $this->startRule($context, RuleType::Scenario);2745            $this->build($context, $token);2746            return 32;2747        }2748        if ($this->match_RuleLine($context, $token)) {2749            $this->endRule($context, RuleType::Step);2750            $this->endRule($context, RuleType::Scenario);2751            $this->endRule($context, RuleType::ScenarioDefinition);2752            $this->endRule($context, RuleType::Rule);2753            $this->startRule($context, RuleType::Rule);2754            $this->startRule($context, RuleType::RuleHeader);2755            $this->build($context, $token);2756            return 23;2757        }2758        if ($this->match_Comment($context, $token)) {2759            $this->build($context, $token);2760            return 35;2761        }2762        if ($this->match_Empty($context, $token)) {2763            $this->build($context, $token);2764            return 35;2765        }2766        $stateComment = "State: 35 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0";2767        $expectedTokens = ["#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];2768        $error = $token->isEOF()2769                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2770                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2771        $this->addError($context, $error);2772        return 35;2773    }2774    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:02775    private function matchTokenAt_36(Token $token, ParserContext $context): int2776    {2777        if ($this->match_EOF($context, $token)) {2778            $this->endRule($context, RuleType::DataTable);2779            $this->endRule($context, RuleType::Step);2780            $this->endRule($context, RuleType::Scenario);2781            $this->endRule($context, RuleType::ScenarioDefinition);2782            $this->endRule($context, RuleType::Rule);2783            $this->endRule($context, RuleType::Feature);2784            $this->build($context, $token);2785            return 42;2786        }2787        if ($this->match_TableRow($context, $token)) {2788            $this->build($context, $token);2789            return 36;2790        }2791        if ($this->match_StepLine($context, $token)) {2792            $this->endRule($context, RuleType::DataTable);2793            $this->endRule($context, RuleType::Step);2794            $this->startRule($context, RuleType::Step);2795            $this->build($context, $token);2796            return 35;2797        }2798        if ($this->match_TagLine($context, $token)) {2799            if ($this->lookahead_1($context)) {2800                $this->endRule($context, RuleType::DataTable);2801                $this->endRule($context, RuleType::Step);2802                $this->startRule($context, RuleType::ExamplesDefinition);2803                $this->startRule($context, RuleType::Tags);2804                $this->build($context, $token);2805                return 37;2806            }2807        }2808        if ($this->match_TagLine($context, $token)) {2809            if ($this->lookahead_0($context)) {2810                $this->endRule($context, RuleType::DataTable);2811                $this->endRule($context, RuleType::Step);2812                $this->endRule($context, RuleType::Scenario);2813                $this->endRule($context, RuleType::ScenarioDefinition);2814                $this->startRule($context, RuleType::ScenarioDefinition);2815                $this->startRule($context, RuleType::Tags);2816                $this->build($context, $token);2817                return 31;2818            }2819        }2820        if ($this->match_TagLine($context, $token)) {2821            $this->endRule($context, RuleType::DataTable);2822            $this->endRule($context, RuleType::Step);2823            $this->endRule($context, RuleType::Scenario);2824            $this->endRule($context, RuleType::ScenarioDefinition);2825            $this->endRule($context, RuleType::Rule);2826            $this->startRule($context, RuleType::Rule);2827            $this->startRule($context, RuleType::RuleHeader);2828            $this->startRule($context, RuleType::Tags);2829            $this->build($context, $token);2830            return 22;2831        }2832        if ($this->match_ExamplesLine($context, $token)) {2833            $this->endRule($context, RuleType::DataTable);2834            $this->endRule($context, RuleType::Step);2835            $this->startRule($context, RuleType::ExamplesDefinition);2836            $this->startRule($context, RuleType::Examples);2837            $this->build($context, $token);2838            return 38;2839        }2840        if ($this->match_ScenarioLine($context, $token)) {2841            $this->endRule($context, RuleType::DataTable);2842            $this->endRule($context, RuleType::Step);2843            $this->endRule($context, RuleType::Scenario);2844            $this->endRule($context, RuleType::ScenarioDefinition);2845            $this->startRule($context, RuleType::ScenarioDefinition);2846            $this->startRule($context, RuleType::Scenario);2847            $this->build($context, $token);2848            return 32;2849        }2850        if ($this->match_RuleLine($context, $token)) {2851            $this->endRule($context, RuleType::DataTable);2852            $this->endRule($context, RuleType::Step);2853            $this->endRule($context, RuleType::Scenario);2854            $this->endRule($context, RuleType::ScenarioDefinition);2855            $this->endRule($context, RuleType::Rule);2856            $this->startRule($context, RuleType::Rule);2857            $this->startRule($context, RuleType::RuleHeader);2858            $this->build($context, $token);2859            return 23;2860        }2861        if ($this->match_Comment($context, $token)) {2862            $this->build($context, $token);2863            return 36;2864        }2865        if ($this->match_Empty($context, $token)) {2866            $this->build($context, $token);2867            return 36;2868        }2869        $stateComment = "State: 36 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0";2870        $expectedTokens = ["#EOF", "#TableRow", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];2871        $error = $token->isEOF()2872                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2873                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2874        $this->addError($context, $error);2875        return 36;2876    }2877    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:02878    private function matchTokenAt_37(Token $token, ParserContext $context): int2879    {2880        if ($this->match_TagLine($context, $token)) {2881            $this->build($context, $token);2882            return 37;2883        }2884        if ($this->match_ExamplesLine($context, $token)) {2885            $this->endRule($context, RuleType::Tags);2886            $this->startRule($context, RuleType::Examples);2887            $this->build($context, $token);2888            return 38;2889        }2890        if ($this->match_Comment($context, $token)) {2891            $this->build($context, $token);2892            return 37;2893        }2894        if ($this->match_Empty($context, $token)) {2895            $this->build($context, $token);2896            return 37;2897        }2898        $stateComment = "State: 37 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0";2899        $expectedTokens = ["#TagLine", "#ExamplesLine", "#Comment", "#Empty"];2900        $error = $token->isEOF()2901                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)2902                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);2903        $this->addError($context, $error);2904        return 37;2905    }2906    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:02907    private function matchTokenAt_38(Token $token, ParserContext $context): int2908    {2909        if ($this->match_EOF($context, $token)) {2910            $this->endRule($context, RuleType::Examples);2911            $this->endRule($context, RuleType::ExamplesDefinition);2912            $this->endRule($context, RuleType::Scenario);2913            $this->endRule($context, RuleType::ScenarioDefinition);2914            $this->endRule($context, RuleType::Rule);2915            $this->endRule($context, RuleType::Feature);2916            $this->build($context, $token);2917            return 42;2918        }2919        if ($this->match_Empty($context, $token)) {2920            $this->build($context, $token);2921            return 38;2922        }2923        if ($this->match_Comment($context, $token)) {2924            $this->build($context, $token);2925            return 40;2926        }2927        if ($this->match_TableRow($context, $token)) {2928            $this->startRule($context, RuleType::ExamplesTable);2929            $this->build($context, $token);2930            return 41;2931        }2932        if ($this->match_TagLine($context, $token)) {2933            if ($this->lookahead_1($context)) {2934                $this->endRule($context, RuleType::Examples);2935                $this->endRule($context, RuleType::ExamplesDefinition);2936                $this->startRule($context, RuleType::ExamplesDefinition);2937                $this->startRule($context, RuleType::Tags);2938                $this->build($context, $token);2939                return 37;2940            }2941        }2942        if ($this->match_TagLine($context, $token)) {2943            if ($this->lookahead_0($context)) {2944                $this->endRule($context, RuleType::Examples);2945                $this->endRule($context, RuleType::ExamplesDefinition);2946                $this->endRule($context, RuleType::Scenario);2947                $this->endRule($context, RuleType::ScenarioDefinition);2948                $this->startRule($context, RuleType::ScenarioDefinition);2949                $this->startRule($context, RuleType::Tags);2950                $this->build($context, $token);2951                return 31;2952            }2953        }2954        if ($this->match_TagLine($context, $token)) {2955            $this->endRule($context, RuleType::Examples);2956            $this->endRule($context, RuleType::ExamplesDefinition);2957            $this->endRule($context, RuleType::Scenario);2958            $this->endRule($context, RuleType::ScenarioDefinition);2959            $this->endRule($context, RuleType::Rule);2960            $this->startRule($context, RuleType::Rule);2961            $this->startRule($context, RuleType::RuleHeader);2962            $this->startRule($context, RuleType::Tags);2963            $this->build($context, $token);2964            return 22;2965        }2966        if ($this->match_ExamplesLine($context, $token)) {2967            $this->endRule($context, RuleType::Examples);2968            $this->endRule($context, RuleType::ExamplesDefinition);2969            $this->startRule($context, RuleType::ExamplesDefinition);2970            $this->startRule($context, RuleType::Examples);2971            $this->build($context, $token);2972            return 38;2973        }2974        if ($this->match_ScenarioLine($context, $token)) {2975            $this->endRule($context, RuleType::Examples);2976            $this->endRule($context, RuleType::ExamplesDefinition);2977            $this->endRule($context, RuleType::Scenario);2978            $this->endRule($context, RuleType::ScenarioDefinition);2979            $this->startRule($context, RuleType::ScenarioDefinition);2980            $this->startRule($context, RuleType::Scenario);2981            $this->build($context, $token);2982            return 32;2983        }2984        if ($this->match_RuleLine($context, $token)) {2985            $this->endRule($context, RuleType::Examples);2986            $this->endRule($context, RuleType::ExamplesDefinition);2987            $this->endRule($context, RuleType::Scenario);2988            $this->endRule($context, RuleType::ScenarioDefinition);2989            $this->endRule($context, RuleType::Rule);2990            $this->startRule($context, RuleType::Rule);2991            $this->startRule($context, RuleType::RuleHeader);2992            $this->build($context, $token);2993            return 23;2994        }2995        if ($this->match_Other($context, $token)) {2996            $this->startRule($context, RuleType::Description);2997            $this->build($context, $token);2998            return 39;2999        }3000        $stateComment = "State: 38 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0";3001        $expectedTokens = ["#EOF", "#Empty", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"];3002        $error = $token->isEOF()3003                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3004                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3005        $this->addError($context, $error);3006        return 38;3007    }3008    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>#Other:03009    private function matchTokenAt_39(Token $token, ParserContext $context): int3010    {3011        if ($this->match_EOF($context, $token)) {3012            $this->endRule($context, RuleType::Description);3013            $this->endRule($context, RuleType::Examples);3014            $this->endRule($context, RuleType::ExamplesDefinition);3015            $this->endRule($context, RuleType::Scenario);3016            $this->endRule($context, RuleType::ScenarioDefinition);3017            $this->endRule($context, RuleType::Rule);3018            $this->endRule($context, RuleType::Feature);3019            $this->build($context, $token);3020            return 42;3021        }3022        if ($this->match_Comment($context, $token)) {3023            $this->endRule($context, RuleType::Description);3024            $this->build($context, $token);3025            return 40;3026        }3027        if ($this->match_TableRow($context, $token)) {3028            $this->endRule($context, RuleType::Description);3029            $this->startRule($context, RuleType::ExamplesTable);3030            $this->build($context, $token);3031            return 41;3032        }3033        if ($this->match_TagLine($context, $token)) {3034            if ($this->lookahead_1($context)) {3035                $this->endRule($context, RuleType::Description);3036                $this->endRule($context, RuleType::Examples);3037                $this->endRule($context, RuleType::ExamplesDefinition);3038                $this->startRule($context, RuleType::ExamplesDefinition);3039                $this->startRule($context, RuleType::Tags);3040                $this->build($context, $token);3041                return 37;3042            }3043        }3044        if ($this->match_TagLine($context, $token)) {3045            if ($this->lookahead_0($context)) {3046                $this->endRule($context, RuleType::Description);3047                $this->endRule($context, RuleType::Examples);3048                $this->endRule($context, RuleType::ExamplesDefinition);3049                $this->endRule($context, RuleType::Scenario);3050                $this->endRule($context, RuleType::ScenarioDefinition);3051                $this->startRule($context, RuleType::ScenarioDefinition);3052                $this->startRule($context, RuleType::Tags);3053                $this->build($context, $token);3054                return 31;3055            }3056        }3057        if ($this->match_TagLine($context, $token)) {3058            $this->endRule($context, RuleType::Description);3059            $this->endRule($context, RuleType::Examples);3060            $this->endRule($context, RuleType::ExamplesDefinition);3061            $this->endRule($context, RuleType::Scenario);3062            $this->endRule($context, RuleType::ScenarioDefinition);3063            $this->endRule($context, RuleType::Rule);3064            $this->startRule($context, RuleType::Rule);3065            $this->startRule($context, RuleType::RuleHeader);3066            $this->startRule($context, RuleType::Tags);3067            $this->build($context, $token);3068            return 22;3069        }3070        if ($this->match_ExamplesLine($context, $token)) {3071            $this->endRule($context, RuleType::Description);3072            $this->endRule($context, RuleType::Examples);3073            $this->endRule($context, RuleType::ExamplesDefinition);3074            $this->startRule($context, RuleType::ExamplesDefinition);3075            $this->startRule($context, RuleType::Examples);3076            $this->build($context, $token);3077            return 38;3078        }3079        if ($this->match_ScenarioLine($context, $token)) {3080            $this->endRule($context, RuleType::Description);3081            $this->endRule($context, RuleType::Examples);3082            $this->endRule($context, RuleType::ExamplesDefinition);3083            $this->endRule($context, RuleType::Scenario);3084            $this->endRule($context, RuleType::ScenarioDefinition);3085            $this->startRule($context, RuleType::ScenarioDefinition);3086            $this->startRule($context, RuleType::Scenario);3087            $this->build($context, $token);3088            return 32;3089        }3090        if ($this->match_RuleLine($context, $token)) {3091            $this->endRule($context, RuleType::Description);3092            $this->endRule($context, RuleType::Examples);3093            $this->endRule($context, RuleType::ExamplesDefinition);3094            $this->endRule($context, RuleType::Scenario);3095            $this->endRule($context, RuleType::ScenarioDefinition);3096            $this->endRule($context, RuleType::Rule);3097            $this->startRule($context, RuleType::Rule);3098            $this->startRule($context, RuleType::RuleHeader);3099            $this->build($context, $token);3100            return 23;3101        }3102        if ($this->match_Other($context, $token)) {3103            $this->build($context, $token);3104            return 39;3105        }3106        $stateComment = "State: 39 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>#Other:0";3107        $expectedTokens = ["#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"];3108        $error = $token->isEOF()3109                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3110                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3111        $this->addError($context, $error);3112        return 39;3113    }3114    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:2>#Comment:03115    private function matchTokenAt_40(Token $token, ParserContext $context): int3116    {3117        if ($this->match_EOF($context, $token)) {3118            $this->endRule($context, RuleType::Examples);3119            $this->endRule($context, RuleType::ExamplesDefinition);3120            $this->endRule($context, RuleType::Scenario);3121            $this->endRule($context, RuleType::ScenarioDefinition);3122            $this->endRule($context, RuleType::Rule);3123            $this->endRule($context, RuleType::Feature);3124            $this->build($context, $token);3125            return 42;3126        }3127        if ($this->match_Comment($context, $token)) {3128            $this->build($context, $token);3129            return 40;3130        }3131        if ($this->match_TableRow($context, $token)) {3132            $this->startRule($context, RuleType::ExamplesTable);3133            $this->build($context, $token);3134            return 41;3135        }3136        if ($this->match_TagLine($context, $token)) {3137            if ($this->lookahead_1($context)) {3138                $this->endRule($context, RuleType::Examples);3139                $this->endRule($context, RuleType::ExamplesDefinition);3140                $this->startRule($context, RuleType::ExamplesDefinition);3141                $this->startRule($context, RuleType::Tags);3142                $this->build($context, $token);3143                return 37;3144            }3145        }3146        if ($this->match_TagLine($context, $token)) {3147            if ($this->lookahead_0($context)) {3148                $this->endRule($context, RuleType::Examples);3149                $this->endRule($context, RuleType::ExamplesDefinition);3150                $this->endRule($context, RuleType::Scenario);3151                $this->endRule($context, RuleType::ScenarioDefinition);3152                $this->startRule($context, RuleType::ScenarioDefinition);3153                $this->startRule($context, RuleType::Tags);3154                $this->build($context, $token);3155                return 31;3156            }3157        }3158        if ($this->match_TagLine($context, $token)) {3159            $this->endRule($context, RuleType::Examples);3160            $this->endRule($context, RuleType::ExamplesDefinition);3161            $this->endRule($context, RuleType::Scenario);3162            $this->endRule($context, RuleType::ScenarioDefinition);3163            $this->endRule($context, RuleType::Rule);3164            $this->startRule($context, RuleType::Rule);3165            $this->startRule($context, RuleType::RuleHeader);3166            $this->startRule($context, RuleType::Tags);3167            $this->build($context, $token);3168            return 22;3169        }3170        if ($this->match_ExamplesLine($context, $token)) {3171            $this->endRule($context, RuleType::Examples);3172            $this->endRule($context, RuleType::ExamplesDefinition);3173            $this->startRule($context, RuleType::ExamplesDefinition);3174            $this->startRule($context, RuleType::Examples);3175            $this->build($context, $token);3176            return 38;3177        }3178        if ($this->match_ScenarioLine($context, $token)) {3179            $this->endRule($context, RuleType::Examples);3180            $this->endRule($context, RuleType::ExamplesDefinition);3181            $this->endRule($context, RuleType::Scenario);3182            $this->endRule($context, RuleType::ScenarioDefinition);3183            $this->startRule($context, RuleType::ScenarioDefinition);3184            $this->startRule($context, RuleType::Scenario);3185            $this->build($context, $token);3186            return 32;3187        }3188        if ($this->match_RuleLine($context, $token)) {3189            $this->endRule($context, RuleType::Examples);3190            $this->endRule($context, RuleType::ExamplesDefinition);3191            $this->endRule($context, RuleType::Scenario);3192            $this->endRule($context, RuleType::ScenarioDefinition);3193            $this->endRule($context, RuleType::Rule);3194            $this->startRule($context, RuleType::Rule);3195            $this->startRule($context, RuleType::RuleHeader);3196            $this->build($context, $token);3197            return 23;3198        }3199        if ($this->match_Empty($context, $token)) {3200            $this->build($context, $token);3201            return 40;3202        }3203        $stateComment = "State: 40 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:2>#Comment:0";3204        $expectedTokens = ["#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Empty"];3205        $error = $token->isEOF()3206                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3207                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3208        $this->addError($context, $error);3209        return 40;3210    }3211    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:03212    private function matchTokenAt_41(Token $token, ParserContext $context): int3213    {3214        if ($this->match_EOF($context, $token)) {3215            $this->endRule($context, RuleType::ExamplesTable);3216            $this->endRule($context, RuleType::Examples);3217            $this->endRule($context, RuleType::ExamplesDefinition);3218            $this->endRule($context, RuleType::Scenario);3219            $this->endRule($context, RuleType::ScenarioDefinition);3220            $this->endRule($context, RuleType::Rule);3221            $this->endRule($context, RuleType::Feature);3222            $this->build($context, $token);3223            return 42;3224        }3225        if ($this->match_TableRow($context, $token)) {3226            $this->build($context, $token);3227            return 41;3228        }3229        if ($this->match_TagLine($context, $token)) {3230            if ($this->lookahead_1($context)) {3231                $this->endRule($context, RuleType::ExamplesTable);3232                $this->endRule($context, RuleType::Examples);3233                $this->endRule($context, RuleType::ExamplesDefinition);3234                $this->startRule($context, RuleType::ExamplesDefinition);3235                $this->startRule($context, RuleType::Tags);3236                $this->build($context, $token);3237                return 37;3238            }3239        }3240        if ($this->match_TagLine($context, $token)) {3241            if ($this->lookahead_0($context)) {3242                $this->endRule($context, RuleType::ExamplesTable);3243                $this->endRule($context, RuleType::Examples);3244                $this->endRule($context, RuleType::ExamplesDefinition);3245                $this->endRule($context, RuleType::Scenario);3246                $this->endRule($context, RuleType::ScenarioDefinition);3247                $this->startRule($context, RuleType::ScenarioDefinition);3248                $this->startRule($context, RuleType::Tags);3249                $this->build($context, $token);3250                return 31;3251            }3252        }3253        if ($this->match_TagLine($context, $token)) {3254            $this->endRule($context, RuleType::ExamplesTable);3255            $this->endRule($context, RuleType::Examples);3256            $this->endRule($context, RuleType::ExamplesDefinition);3257            $this->endRule($context, RuleType::Scenario);3258            $this->endRule($context, RuleType::ScenarioDefinition);3259            $this->endRule($context, RuleType::Rule);3260            $this->startRule($context, RuleType::Rule);3261            $this->startRule($context, RuleType::RuleHeader);3262            $this->startRule($context, RuleType::Tags);3263            $this->build($context, $token);3264            return 22;3265        }3266        if ($this->match_ExamplesLine($context, $token)) {3267            $this->endRule($context, RuleType::ExamplesTable);3268            $this->endRule($context, RuleType::Examples);3269            $this->endRule($context, RuleType::ExamplesDefinition);3270            $this->startRule($context, RuleType::ExamplesDefinition);3271            $this->startRule($context, RuleType::Examples);3272            $this->build($context, $token);3273            return 38;3274        }3275        if ($this->match_ScenarioLine($context, $token)) {3276            $this->endRule($context, RuleType::ExamplesTable);3277            $this->endRule($context, RuleType::Examples);3278            $this->endRule($context, RuleType::ExamplesDefinition);3279            $this->endRule($context, RuleType::Scenario);3280            $this->endRule($context, RuleType::ScenarioDefinition);3281            $this->startRule($context, RuleType::ScenarioDefinition);3282            $this->startRule($context, RuleType::Scenario);3283            $this->build($context, $token);3284            return 32;3285        }3286        if ($this->match_RuleLine($context, $token)) {3287            $this->endRule($context, RuleType::ExamplesTable);3288            $this->endRule($context, RuleType::Examples);3289            $this->endRule($context, RuleType::ExamplesDefinition);3290            $this->endRule($context, RuleType::Scenario);3291            $this->endRule($context, RuleType::ScenarioDefinition);3292            $this->endRule($context, RuleType::Rule);3293            $this->startRule($context, RuleType::Rule);3294            $this->startRule($context, RuleType::RuleHeader);3295            $this->build($context, $token);3296            return 23;3297        }3298        if ($this->match_Comment($context, $token)) {3299            $this->build($context, $token);3300            return 41;3301        }3302        if ($this->match_Empty($context, $token)) {3303            $this->build($context, $token);3304            return 41;3305        }3306        $stateComment = "State: 41 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0";3307        $expectedTokens = ["#EOF", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];3308        $error = $token->isEOF()3309                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3310                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3311        $this->addError($context, $error);3312        return 41;3313    }3314    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:03315    private function matchTokenAt_43(Token $token, ParserContext $context): int3316    {3317        if ($this->match_DocStringSeparator($context, $token)) {3318            $this->build($context, $token);3319            return 44;3320        }3321        if ($this->match_Other($context, $token)) {3322            $this->build($context, $token);3323            return 43;3324        }3325        $stateComment = "State: 43 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0";3326        $expectedTokens = ["#DocStringSeparator", "#Other"];3327        $error = $token->isEOF()3328                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3329                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3330        $this->addError($context, $error);3331        return 43;3332    }3333    // GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:03334    private function matchTokenAt_44(Token $token, ParserContext $context): int3335    {3336        if ($this->match_EOF($context, $token)) {3337            $this->endRule($context, RuleType::DocString);3338            $this->endRule($context, RuleType::Step);3339            $this->endRule($context, RuleType::Scenario);3340            $this->endRule($context, RuleType::ScenarioDefinition);3341            $this->endRule($context, RuleType::Rule);3342            $this->endRule($context, RuleType::Feature);3343            $this->build($context, $token);3344            return 42;3345        }3346        if ($this->match_StepLine($context, $token)) {3347            $this->endRule($context, RuleType::DocString);3348            $this->endRule($context, RuleType::Step);3349            $this->startRule($context, RuleType::Step);3350            $this->build($context, $token);3351            return 35;3352        }3353        if ($this->match_TagLine($context, $token)) {3354            if ($this->lookahead_1($context)) {3355                $this->endRule($context, RuleType::DocString);3356                $this->endRule($context, RuleType::Step);3357                $this->startRule($context, RuleType::ExamplesDefinition);3358                $this->startRule($context, RuleType::Tags);3359                $this->build($context, $token);3360                return 37;3361            }3362        }3363        if ($this->match_TagLine($context, $token)) {3364            if ($this->lookahead_0($context)) {3365                $this->endRule($context, RuleType::DocString);3366                $this->endRule($context, RuleType::Step);3367                $this->endRule($context, RuleType::Scenario);3368                $this->endRule($context, RuleType::ScenarioDefinition);3369                $this->startRule($context, RuleType::ScenarioDefinition);3370                $this->startRule($context, RuleType::Tags);3371                $this->build($context, $token);3372                return 31;3373            }3374        }3375        if ($this->match_TagLine($context, $token)) {3376            $this->endRule($context, RuleType::DocString);3377            $this->endRule($context, RuleType::Step);3378            $this->endRule($context, RuleType::Scenario);3379            $this->endRule($context, RuleType::ScenarioDefinition);3380            $this->endRule($context, RuleType::Rule);3381            $this->startRule($context, RuleType::Rule);3382            $this->startRule($context, RuleType::RuleHeader);3383            $this->startRule($context, RuleType::Tags);3384            $this->build($context, $token);3385            return 22;3386        }3387        if ($this->match_ExamplesLine($context, $token)) {3388            $this->endRule($context, RuleType::DocString);3389            $this->endRule($context, RuleType::Step);3390            $this->startRule($context, RuleType::ExamplesDefinition);3391            $this->startRule($context, RuleType::Examples);3392            $this->build($context, $token);3393            return 38;3394        }3395        if ($this->match_ScenarioLine($context, $token)) {3396            $this->endRule($context, RuleType::DocString);3397            $this->endRule($context, RuleType::Step);3398            $this->endRule($context, RuleType::Scenario);3399            $this->endRule($context, RuleType::ScenarioDefinition);3400            $this->startRule($context, RuleType::ScenarioDefinition);3401            $this->startRule($context, RuleType::Scenario);3402            $this->build($context, $token);3403            return 32;3404        }3405        if ($this->match_RuleLine($context, $token)) {3406            $this->endRule($context, RuleType::DocString);3407            $this->endRule($context, RuleType::Step);3408            $this->endRule($context, RuleType::Scenario);3409            $this->endRule($context, RuleType::ScenarioDefinition);3410            $this->endRule($context, RuleType::Rule);3411            $this->startRule($context, RuleType::Rule);3412            $this->startRule($context, RuleType::RuleHeader);3413            $this->build($context, $token);3414            return 23;3415        }3416        if ($this->match_Comment($context, $token)) {3417            $this->build($context, $token);3418            return 44;3419        }3420        if ($this->match_Empty($context, $token)) {3421            $this->build($context, $token);3422            return 44;3423        }3424        $stateComment = "State: 44 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0";3425        $expectedTokens = ["#EOF", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];3426        $error = $token->isEOF()3427                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3428                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3429        $this->addError($context, $error);3430        return 44;3431    }3432    // GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:03433    private function matchTokenAt_45(Token $token, ParserContext $context): int3434    {3435        if ($this->match_DocStringSeparator($context, $token)) {3436            $this->build($context, $token);3437            return 46;3438        }3439        if ($this->match_Other($context, $token)) {3440            $this->build($context, $token);3441            return 45;3442        }3443        $stateComment = "State: 45 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0";3444        $expectedTokens = ["#DocStringSeparator", "#Other"];3445        $error = $token->isEOF()3446                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3447                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3448        $this->addError($context, $error);3449        return 45;3450    }3451    // GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:03452    private function matchTokenAt_46(Token $token, ParserContext $context): int3453    {3454        if ($this->match_EOF($context, $token)) {3455            $this->endRule($context, RuleType::DocString);3456            $this->endRule($context, RuleType::Step);3457            $this->endRule($context, RuleType::Background);3458            $this->endRule($context, RuleType::Rule);3459            $this->endRule($context, RuleType::Feature);3460            $this->build($context, $token);3461            return 42;3462        }3463        if ($this->match_StepLine($context, $token)) {3464            $this->endRule($context, RuleType::DocString);3465            $this->endRule($context, RuleType::Step);3466            $this->startRule($context, RuleType::Step);3467            $this->build($context, $token);3468            return 29;3469        }3470        if ($this->match_TagLine($context, $token)) {3471            if ($this->lookahead_0($context)) {3472                $this->endRule($context, RuleType::DocString);3473                $this->endRule($context, RuleType::Step);3474                $this->endRule($context, RuleType::Background);3475                $this->startRule($context, RuleType::ScenarioDefinition);3476                $this->startRule($context, RuleType::Tags);3477                $this->build($context, $token);3478                return 31;3479            }3480        }3481        if ($this->match_TagLine($context, $token)) {3482            $this->endRule($context, RuleType::DocString);3483            $this->endRule($context, RuleType::Step);3484            $this->endRule($context, RuleType::Background);3485            $this->endRule($context, RuleType::Rule);3486            $this->startRule($context, RuleType::Rule);3487            $this->startRule($context, RuleType::RuleHeader);3488            $this->startRule($context, RuleType::Tags);3489            $this->build($context, $token);3490            return 22;3491        }3492        if ($this->match_ScenarioLine($context, $token)) {3493            $this->endRule($context, RuleType::DocString);3494            $this->endRule($context, RuleType::Step);3495            $this->endRule($context, RuleType::Background);3496            $this->startRule($context, RuleType::ScenarioDefinition);3497            $this->startRule($context, RuleType::Scenario);3498            $this->build($context, $token);3499            return 32;3500        }3501        if ($this->match_RuleLine($context, $token)) {3502            $this->endRule($context, RuleType::DocString);3503            $this->endRule($context, RuleType::Step);3504            $this->endRule($context, RuleType::Background);3505            $this->endRule($context, RuleType::Rule);3506            $this->startRule($context, RuleType::Rule);3507            $this->startRule($context, RuleType::RuleHeader);3508            $this->build($context, $token);3509            return 23;3510        }3511        if ($this->match_Comment($context, $token)) {3512            $this->build($context, $token);3513            return 46;3514        }3515        if ($this->match_Empty($context, $token)) {3516            $this->build($context, $token);3517            return 46;3518        }3519        $stateComment = "State: 46 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0";3520        $expectedTokens = ["#EOF", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];3521        $error = $token->isEOF()3522                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3523                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3524        $this->addError($context, $error);3525        return 46;3526    }3527    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:03528    private function matchTokenAt_47(Token $token, ParserContext $context): int3529    {3530        if ($this->match_DocStringSeparator($context, $token)) {3531            $this->build($context, $token);3532            return 48;3533        }3534        if ($this->match_Other($context, $token)) {3535            $this->build($context, $token);3536            return 47;3537        }3538        $stateComment = "State: 47 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0";3539        $expectedTokens = ["#DocStringSeparator", "#Other"];3540        $error = $token->isEOF()3541                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3542                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3543        $this->addError($context, $error);3544        return 47;3545    }3546    // GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:03547    private function matchTokenAt_48(Token $token, ParserContext $context): int3548    {3549        if ($this->match_EOF($context, $token)) {3550            $this->endRule($context, RuleType::DocString);3551            $this->endRule($context, RuleType::Step);3552            $this->endRule($context, RuleType::Scenario);3553            $this->endRule($context, RuleType::ScenarioDefinition);3554            $this->endRule($context, RuleType::Feature);3555            $this->build($context, $token);3556            return 42;3557        }3558        if ($this->match_StepLine($context, $token)) {3559            $this->endRule($context, RuleType::DocString);3560            $this->endRule($context, RuleType::Step);3561            $this->startRule($context, RuleType::Step);3562            $this->build($context, $token);3563            return 15;3564        }3565        if ($this->match_TagLine($context, $token)) {3566            if ($this->lookahead_1($context)) {3567                $this->endRule($context, RuleType::DocString);3568                $this->endRule($context, RuleType::Step);3569                $this->startRule($context, RuleType::ExamplesDefinition);3570                $this->startRule($context, RuleType::Tags);3571                $this->build($context, $token);3572                return 17;3573            }3574        }3575        if ($this->match_TagLine($context, $token)) {3576            if ($this->lookahead_0($context)) {3577                $this->endRule($context, RuleType::DocString);3578                $this->endRule($context, RuleType::Step);3579                $this->endRule($context, RuleType::Scenario);3580                $this->endRule($context, RuleType::ScenarioDefinition);3581                $this->startRule($context, RuleType::ScenarioDefinition);3582                $this->startRule($context, RuleType::Tags);3583                $this->build($context, $token);3584                return 11;3585            }3586        }3587        if ($this->match_TagLine($context, $token)) {3588            $this->endRule($context, RuleType::DocString);3589            $this->endRule($context, RuleType::Step);3590            $this->endRule($context, RuleType::Scenario);3591            $this->endRule($context, RuleType::ScenarioDefinition);3592            $this->startRule($context, RuleType::Rule);3593            $this->startRule($context, RuleType::RuleHeader);3594            $this->startRule($context, RuleType::Tags);3595            $this->build($context, $token);3596            return 22;3597        }3598        if ($this->match_ExamplesLine($context, $token)) {3599            $this->endRule($context, RuleType::DocString);3600            $this->endRule($context, RuleType::Step);3601            $this->startRule($context, RuleType::ExamplesDefinition);3602            $this->startRule($context, RuleType::Examples);3603            $this->build($context, $token);3604            return 18;3605        }3606        if ($this->match_ScenarioLine($context, $token)) {3607            $this->endRule($context, RuleType::DocString);3608            $this->endRule($context, RuleType::Step);3609            $this->endRule($context, RuleType::Scenario);3610            $this->endRule($context, RuleType::ScenarioDefinition);3611            $this->startRule($context, RuleType::ScenarioDefinition);3612            $this->startRule($context, RuleType::Scenario);3613            $this->build($context, $token);3614            return 12;3615        }3616        if ($this->match_RuleLine($context, $token)) {3617            $this->endRule($context, RuleType::DocString);3618            $this->endRule($context, RuleType::Step);3619            $this->endRule($context, RuleType::Scenario);3620            $this->endRule($context, RuleType::ScenarioDefinition);3621            $this->startRule($context, RuleType::Rule);3622            $this->startRule($context, RuleType::RuleHeader);3623            $this->build($context, $token);3624            return 23;3625        }3626        if ($this->match_Comment($context, $token)) {3627            $this->build($context, $token);3628            return 48;3629        }3630        if ($this->match_Empty($context, $token)) {3631            $this->build($context, $token);3632            return 48;3633        }3634        $stateComment = "State: 48 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0";3635        $expectedTokens = ["#EOF", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"];3636        $error = $token->isEOF()3637                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3638                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3639        $this->addError($context, $error);3640        return 48;3641    }3642    // GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:03643    private function matchTokenAt_49(Token $token, ParserContext $context): int3644    {3645        if ($this->match_DocStringSeparator($context, $token)) {3646            $this->build($context, $token);3647            return 50;3648        }3649        if ($this->match_Other($context, $token)) {3650            $this->build($context, $token);3651            return 49;3652        }3653        $stateComment = "State: 49 - GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0";3654        $expectedTokens = ["#DocStringSeparator", "#Other"];3655        $error = $token->isEOF()3656                ? new UnexpectedEofException($token, $expectedTokens, $stateComment)3657                : new UnexpectedTokenException($token, $expectedTokens, $stateComment);3658        $this->addError($context, $error);3659        return 49;3660    }3661    // GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:03662    private function matchTokenAt_50(Token $token, ParserContext $context): int3663    {...IndividualStrategies.php
Source: IndividualStrategies.php 
1<?php2defined('BASEPATH') OR exit('No direct script access allowed');3class IndividualStrategies extends CI_Controller {4    function __construct() {5        parent::__construct();6        $this->viewname = $this->router->fetch_class();7        $this->method = $this->router->fetch_method();8        $this->load->library(array('form_validation', 'Session', 'm_pdf'));9    }10    /*11      @Author : Niral Patel12      @Desc   : IndividualStrategies Index Page13      @Input 	: yp id14      @Output	:15      @Date   : 12/07/201716     */17    public function index($id, $careHomeId = 0, $isArchive = 0) {18        $data['is_archive_page'] = $isArchive;19        $data['careHomeId'] = $careHomeId;20        /* for care to care data21          ghelani nikunj22          24/9/201823          care to  care data get with the all previous care home */24        if ($isArchive !== 0) {25            $temp = $this->common_model->get_records(PAST_CARE_HOME_INFO, array('move_date'), '', '', array("yp_id" => $id, "past_carehome" => $careHomeId));26            $careHomeDetails = $this->common_model->get_records(PAST_CARE_HOME_INFO, array("*"), '', '', array("yp_id" => $id, "move_date <= " => $temp[0]['move_date']));27            $enterDate = $moveDate = '';28            $totalCareHome = count($careHomeDetails);29            if ($totalCareHome >= 1) {30                $enterDate = $careHomeDetails[0]['enter_date'];31                $moveDate = $careHomeDetails[$totalCareHome - 1]['move_date'];32            } elseif ($totalCareHome == 0) {33                $enterDate = $careHomeDetails[0]['enter_date'];34                $moveDate = $careHomeDetails[0]['move_date'];35            }36        }37        if (is_numeric($id)) {38            //get pp form39            $match = array('is_form_id' => 1);40            $formsdata = $this->common_model->get_records(IS_FORM, '', '', '', $match);41            if (!empty($formsdata)) {42                $data['form_data'] = json_decode($formsdata[0]['form_json_data'], TRUE);43            }44            //get YP information45            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");46            $data['YP_details'] = YpDetails($id,$fields);47            if (empty($data['YP_details'])) {48                $msg = $this->lang->line('common_no_record_found');49                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");50                redirect('YoungPerson/view/' . $id);51            }52            //get ra yp data53            $match = array('yp_id' => $id, 'is_previous_version' => 0);54            $data['edit_data'] = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, '', '', '', $match);55            $table = NFC_AMENDMENTS . ' as do';56            $match = array('do.yp_id' => $id);57            $fields = array("do.*,CONCAT(l.firstname,' ', l.lastname) as create_name");58            $join_tables = array(LOGIN . ' as l' => 'l.login_id= do.staff_initials');59            $data['item_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);60            $table = NFC_CURRENT_PROTOCOLS_IN_PLACE . ' as cpip';61            $match = array('cpip.yp_id' => $id);62            $fields = array("cpip.*,CONCAT(l.firstname,' ', l.lastname) as create_name");63            $join_tables = array(LOGIN . ' as l' => 'l.login_id= cpip.staff_initials');64            $data['protocols_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);65            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];66            $table = INDIVIDUAL_MEETING_SIGNOFF . ' as ims';67            $where = array("l.is_delete" => "0", "ims.yp_id" => $id, "ims.is_delete" => "0");68            $fields = array("ims.created_by,ims.created_date,ims.yp_id, CONCAT(`firstname`,' ', `lastname`) as name");69            $join_tables = array(LOGIN . ' as l' => 'l.login_id=ims.created_by');70            $group_by = array('created_by');71            $data['ra_signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', $group_by, $where);72            $table = INDIVIDUAL_MEETING_SIGNOFF . ' as ims';73            $where = array("ims.yp_id" => $id, "ims.created_by" => $login_user_id, "ims.is_delete" => "0");74            $fields = array("ims.individual_meeting_signoff_id,ims.individual_meeting_id,ims.created_date");75            $data['check_signoff_data'] = $this->common_model->get_records($table, $fields, '', '', '', '', '', '', '', '', '', $where);76            //get is old yp data77            $match = array('yp_id' => $id, 'is_previous_version' => 1);78            $data['prev_edit_data'] = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, '', '', '', $match);79            $match = array('yp_id' => $id, 'status' => 1);80            $prev_archive = $this->common_model->get_records(INDIVIDUAL_STRATEGIES_ARCHIVE, '', '', '', $match, '', '1', '', 'is_archive_id', 'desc');81            if (!empty($prev_archive)) {82                $is_archive_id = $prev_archive[0]['is_archive_id'];83                $table = NFC_ARCHIVE_AMENDMENTS . ' as do';84                $match = array('do.yp_id' => $id, 'do.archive_individual_meeting_id' => $is_archive_id);85                $fields = array("do.*,CONCAT(l.firstname,' ', l.lastname) as create_name");86                $join_tables = array(LOGIN . ' as l' => 'l.login_id= do.staff_initials');87                $data['item_details_archive'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);88                $table = NFC_ARCHIVE_CURRENT_PROTOCOLS_IN_PLACE . ' as cpip';89                $match = array('cpip.yp_id' => $id, 'cpip.archive_individual_meeting_id' => $is_archive_id);90                $fields = array("cpip.*,CONCAT(l.firstname,' ', l.lastname) as create_name");91                $join_tables = array(LOGIN . ' as l' => 'l.login_id= cpip.staff_initials');92                $data['protocols_details_archive'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);93            }94            //get external approve95            $table = NFC_IS_SIGNOFF_DETAILS;96            $fields = array('form_json_data,user_type,key_data,email');97            $where = array('yp_id' => $id);98            $data['check_external_signoff_data'] = $this->common_model->get_records($table, $fields, '', '', '', '', '', '', '', '', '', $where);99            $data['ypid'] = $id;100            $data['header'] = array('menu_module' => 'YoungPerson');101            $data['footerJs'][0] = base_url('uploads/custom/js/IndividualStrategies/IndividualStrategies.js');102            $data['crnt_view'] = $this->viewname;103            $data['main_content'] = '/view';104            $this->parser->parse('layouts/DefaultTemplate', $data);105        } else {106            show_404();107        }108    }109    /*110      @Author : Niral Patel111      @Desc   : create RiskAssesment edit page112      @Input 	:113      @Output	:114      @Date   : 12/07/2017115     */116      117    public function edit($id) {118        if (is_numeric($id)) {119            //get pp form120            $match = array('is_form_id' => 1);121            $pp_forms = $this->common_model->get_records(IS_FORM, '', '', '', $match);122            if (!empty($pp_forms)) {123                $data['form_data'] = json_decode($pp_forms[0]['form_json_data'], TRUE);124            }125            //get YP information126            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");127            $data['YP_details'] = YpDetails($id,$fields);128            if (empty($data['YP_details'])) {129                $msg = $this->lang->line('common_no_record_found');130                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");131                redirect('YoungPerson/view/' . $id);132            }133            //get pp yp data134            $match = array('yp_id' => $id, 'is_previous_version' => 0);135            $data['edit_data'] = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, '', '', '', $match);136            //get amendments data137            $table = NFC_AMENDMENTS;138            $match = array('yp_id' => $id);139            $field = array('*');140            $data['item_details'] = $this->common_model->get_records($table, $field, '', '', $match);141            //get Current Protocols In Place data142            $table = NFC_CURRENT_PROTOCOLS_IN_PLACE;143            $match = array('yp_id' => $id);144            $field = array('*');145            $data['protocols_details'] = $this->common_model->get_records($table, $field, '', '', $match);146            $url_data = base_url('IndividualStrategies/edit/' . $id);147            $match = array('url_data' => $url_data);148            $data['check_edit_permission'] = $this->common_model->get_records(CHECK_EDIT_URL, '*', '', '', $match);149            if (count($data['check_edit_permission']) > 0) {150                $in_time = date('Y-m-d h:i:s', strtotime($data['check_edit_permission'][0]['datetime']));151                $currnt_time = date('Y-m-d h:i:s');152                if (strtotime($in_time) > strtotime($currnt_time)) {153                    $now = strtotime($in_time) - strtotime($currnt_time);154                } else {155                    $now = strtotime($currnt_time) - strtotime($in_time);156                }157                $secs = floor($now % 60);158                if ($secs >= 10) {159                    $data['ypid'] = $id;160                    $data['footerJs'][0] = base_url('uploads/custom/js/IndividualStrategies/IndividualStrategies.js');161                    $data['footerJs'][1] = base_url('uploads/custom/js/formbuilder/formbuilder.js');162                    $data['header'] = array('menu_module' => 'YoungPerson');163                    $data['crnt_view'] = $this->viewname;164                    $data['main_content'] = '/edit';165                    $this->parser->parse('layouts/DefaultTemplate', $data);166                } else {167                    $msg = $this->lang->line('check_is_user_update_data');168                    $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");169                    redirect('/' . $this->viewname . '/index/' . $id);170                }171            } else {172                $data['ypid'] = $id;173                $data['footerJs'][0] = base_url('uploads/custom/js/IndividualStrategies/IndividualStrategies.js');174                $data['footerJs'][1] = base_url('uploads/custom/js/formbuilder/formbuilder.js');175                $data['header'] = array('menu_module' => 'YoungPerson');176                $data['crnt_view'] = $this->viewname;177                $data['main_content'] = '/edit';178                $this->parser->parse('layouts/DefaultTemplate', $data);179            }180        } else {181            show_404();182        }183    }184    /*185      @Author : Ritesh rana186      @Desc   : Insert is form187      @Input    :188      @Output   :189      @Date   : 26/02/2018190     */191    public function insert() {192        if (!validateFormSecret()) {193            redirect($_SERVER['HTTP_REFERER']);  //Redirect On Listing page194        }195        $postData = $this->input->post();196        $match = array("yp_id" => $postData['yp_id']);197        $fields = array("care_home");198        $data_care_home_id['YP_details_care_home_id'] = $this->common_model->get_records(YP_DETAILS, $fields, '', '', $match);199        unset($postData['submit_isform']);200        //get pp form201        $match = array('is_form_id' => 1);202        $pp_forms = $this->common_model->get_records(IS_FORM, '', '', '', $match);203        if (!empty($pp_forms)) {204            $pp_form_data = json_decode($pp_forms[0]['form_json_data'], TRUE);205            $data = array();206            foreach ($pp_form_data as $row) {207                if (isset($row['name'])) {208                    if ($row['type'] == 'file') {209                        $filename = $row['name'];210                        //get image previous image211                        $match = array('individual_strategies_id' => $postData['individual_strategies_id'], 'yp_id' => $postData['yp_id'], 'is_previous_version' => 0);212                        $pp_yp_data = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, array('`' . $row['name'] . '`'), '', '', $match);213                        //delete img214                        if (!empty($postData['hidden_' . $row['name']])) {215                            $delete_img = explode(',', $postData['hidden_' . $row['name']]);216                            $db_images = explode(',', $pp_yp_data[0][$filename]);217                            $differentedImage = array_diff($db_images, $delete_img);218                            $pp_yp_data[0][$filename] = !empty($differentedImage) ? implode(',', $differentedImage) : '';219                        }220                        if (!empty($_FILES[$filename]['name'][0])) {221                            /* common function replaced by Dhara Bhalala on 29/09/2018 */222                            createDirectory(array($this->config->item('is_base_url'), $this->config->item('is_base_big_url'), $this->config->item('is_base_big_url') . '/' . $postData['yp_id']));223                            $file_view = $this->config->item('is_img_url') . $postData['yp_id'];224                            //upload big image225                            $upload_data = uploadImage($filename, $file_view, '/' . $this->viewname . '/index/' . $postData['yp_id']);226                            //upload small image227                            $insertImagesData = array();228                            if (!empty($upload_data)) {229                                foreach ($upload_data as $imageFiles) {230                                    /* common function replaced by Dhara Bhalala on 29/09/2018 */231                                    createDirectory(array($this->config->item('is_base_small_url'), $this->config->item('is_base_small_url') . '/' . $postData['yp_id']));232                                    /* condition added by Dhara Bhalala on 21/09/2018 to solve GD lib error */233                                    if ($imageFiles['is_image'])234                                        $a = do_resize($this->config->item('is_img_url') . $postData['yp_id'], $this->config->item('is_img_url_small') . $postData['yp_id'], $imageFiles['file_name']);235                                    array_push($insertImagesData, $imageFiles['file_name']);236                                    if (!empty($insertImagesData)) {237                                        $images = implode(',', $insertImagesData);238                                    }239                                }240                                if (!empty($pp_yp_data[0][$filename])) {241                                    $images .=',' . $pp_yp_data[0][$filename];242                                }243                                $data[$row['name']] = !empty($images) ? $images : '';244                            }245                        } else {246                            $data[$row['name']] = !empty($pp_yp_data[0][$filename]) ? $pp_yp_data[0][$filename] : '';247                        }248                    } else {249                        if ($row['type'] != 'button') {250                            if ($row['type'] == 'checkbox-group') {251                                $data[$row['name']] = !empty($postData[$row['name']]) ? implode(',', $postData[$row['name']]) : '';252                            } elseif ($row['type'] == 'textarea' && $row['subtype'] == 'tinymce') {253                                $data[$row['name']] = strip_slashes($postData[$row['name']]);254                            } elseif ($row['type'] == 'date') {255                                $data[$row['name']] = dateformat($postData[$row['name']]);256                            } elseif ($row['type'] == 'text') {257                                if ($row['subtype'] == 'time') {258                                    $data[$row['name']] = dbtimeformat($postData[$row['name']]);259                                } else {260                                    $data[$row['name']] = strip_tags(strip_slashes($postData[$row['name']]));261                                }262                            } else {263                                $data[$row['name']] = strip_tags(strip_slashes($postData[$row['name']]));264                            }265                        }266                    }267                }268            }269        }270        //get current data271        $match = array('yp_id' => $postData['yp_id'], 'is_previous_version' => 0);272        $pp_new_data = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, array('*'), '', '', $match);273        //get pp yp data274        $match = array('yp_id' => $postData['yp_id'], 'is_previous_version' => 1);275        $previous_data = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, array('*'), '', '', $match);276        if (!empty($pp_new_data)) {277            $update_pre_data = array();278            $updated_field = array();279            $n = 0;280            if (!empty($pp_form_data)) {281                foreach ($pp_form_data as $row) {282                    if (isset($row['name'])) {283                        if ($row['type'] != 'button') {284                            if (!empty($pp_new_data)) {285                                if ($postData[$row['name']] != $pp_new_data[0][$row['name']]) {286                                    $updated_field[] = $row['label'];287                                    $n++;288                                }289                            }290                            $update_pre_data[$row['name']] = strip_slashes($pp_new_data[0][$row['name']]);291                        }292                    }293                }294                $update_pre_data['yp_id'] = $postData['yp_id'];295                $update_pre_data['created_date'] = $pp_new_data[0]['created_date'];296                $update_pre_data['created_by'] = $pp_new_data[0]['created_by'];297                $update_pre_data['modified_by'] = $pp_new_data[0]['modified_by'];298                $update_pre_data['modified_date'] = $pp_new_data[0]['modified_date'];299                $update_pre_data['care_home_id'] = $data_care_home_id['YP_details_care_home_id'][0]['care_home'];300                $update_pre_data['is_previous_version'] = 1;301            }302        }303        if (!empty($postData['individual_strategies_id'])) {304            $individual_strategies_id = $postData['individual_strategies_id'];305            $data['individual_strategies_id'] = $postData['individual_strategies_id'];306            $data['yp_id'] = $postData['yp_id'];307            $data['modified_date'] = datetimeformat();308            $data['modified_by'] = $this->session->userdata['LOGGED_IN']['ID'];309            $data['care_home_id'] = $data_care_home_id['YP_details_care_home_id'][0]['care_home'];310            $this->common_model->update(INDIVIDUAL_STRATEGIES, $data, array('individual_strategies_id' => $postData['individual_strategies_id']));311            if (!empty($updated_field)) {312                foreach ($updated_field as $fields) {313                    //Insert log activity314                    $activity = array(315                        'user_id' => $this->session->userdata['LOGGED_IN']['ID'],316                        'yp_id' => !empty($postData['yp_id']) ? $postData['yp_id'] : '',317                        'module_name' => IS_MODULE,318                        'module_field_name' => $fields,319                        'type' => 2320                    );321                    log_activity($activity);322                }323            }324        } else {325            326            $data['yp_id'] = $postData['yp_id'];327            $data['created_date'] = datetimeformat();328            $data['modified_date'] = datetimeformat();329            $data['created_by'] = $this->session->userdata['LOGGED_IN']['ID'];330            $data['care_home_id'] = $data_care_home_id['YP_details_care_home_id'][0]['care_home'];331            $this->common_model->insert(INDIVIDUAL_STRATEGIES, $data);332            $individual_strategies_id = $this->db->insert_id();333            //Insert log activity334            $activity = array(335                'user_id' => $this->session->userdata['LOGGED_IN']['ID'],336                'yp_id' => !empty($postData['yp_id']) ? $postData['yp_id'] : '',337                'module_name' => IS_MODULE,338                'module_field_name' => '',339                'type' => 1340            );341            log_activity($activity);342        }343        $new_change = 0;344        $new_update = 0;345        if (!empty($individual_strategies_id)) {346            // amendments insater & update 347            //Delete item348            $delete_item_id = $this->input->post('delete_item_id');349            if (!empty($delete_item_id)) {350                $new_update++;351                $delete_item = substr($delete_item_id, 0, -1);352                $delete_item_id = explode(',', $delete_item);353                $where1 = array('individual_meeting_id' => $individual_strategies_id);354                $this->common_model->delete_where_in(NFC_AMENDMENTS, $where1, 'amendments_id', $delete_item_id);355            }356            //update amendments item357            $where1 = array('individual_meeting_id' => $individual_strategies_id);358            $individual_meeting_item = $this->common_model->get_records(NFC_AMENDMENTS, array('amendments_id'), '', '', $where1, '');359            if (!empty($individual_meeting_item)) {360                361                for ($i = 0; $i < count($individual_meeting_item); $i++) {362                    $update_item = '';363                    if (!empty($postData['amendments_' . $individual_meeting_item[$i]['amendments_id']])) {364                        $adst = addslashes(($postData['amendments_' . $individual_meeting_item[$i]['amendments_id']]));365                        $where1 = "yp_id =" . $postData['yp_id'] . " and amendments_id =" . $individual_meeting_item[$i]['amendments_id'];366                        $amendments_archive = $this->common_model->get_records(NFC_ARCHIVE_AMENDMENTS, array('archive_amendments_id,amendments'), '', '', $where1, '', '1', '', 'archive_amendments_id', 'desc', '', '');367                        if (!empty($amendments_archive)) {368                            $current = strip_tags($postData['amendments_' . $individual_meeting_item[$i]['amendments_id']]);369                            $ame = strip_tags($amendments_archive[0]['amendments']);370                            if ($current != $ame) {371                                $new_update++;372                            }373                        }374                        375                        $update_item['amendments'] = stripslashes(str_replace("'", '"', $this->input->post('amendments_' . $individual_meeting_item[$i]['amendments_id'])));376                        /* Start - Ritesh Rana : Mantis issue # 8931, Dt: 17th April 2018 */377                        $prev_amendments_data = $this->common_model->get_records(NFC_AMENDMENTS, array('*'), '', '', $where1);378                        if ($prev_amendments_data) {379                            $amendments_prev_info = $prev_amendments_data[0]['amendments'];380                            if ($amendments_prev_info != $update_item['amendments']) {381                                $update_item['modified_date'] = datetimeformat();382                            }383                        }384                        /* End - Ritesh Rana : Mantis issue # 8931, Dt: 17th April 2018 */385                        $where = array('amendments_id' => $individual_meeting_item[$i]['amendments_id']);386                        $success_update = $this->common_model->update(NFC_AMENDMENTS, $update_item, $where);387                    }388                }389            }390            //Insert new amendments391            $item_name = $this->input->post('amendments');392            for ($i = 0; $i < count($item_name); $i++) {393                if (!empty($item_name[$i])) {394                    $new_change ++;395                    $item_data['individual_meeting_id'] = $individual_strategies_id;396                    $item_data['yp_id'] = $postData['yp_id'];397                    $item_data['amendments'] = strip_slashes($item_name[$i]);398                    $item_data['staff_initials'] = $this->session->userdata['LOGGED_IN']['ID'];399                    $item_data['created_date'] = datetimeformat();400                    $item_data['modified_date'] = datetimeformat();401                    $this->common_model->insert(NFC_AMENDMENTS, $item_data);402                }403            }404            /* end amendments functionality */405            /* start Current Protocols in place */406            $delete_protocols_id = $this->input->post('delete_protocols_id');407            if (!empty($delete_protocols_id)) {408                $new_update++;409                $delete_protocols = substr($delete_protocols_id, 0, -1);410                $delete_id = explode(',', $delete_protocols);411                $where1 = array('individual_meeting_id' => $individual_strategies_id);412                $this->common_model->delete_where_in(NFC_CURRENT_PROTOCOLS_IN_PLACE, $where1, 'protocols_in_place_id', $delete_id);413            }414            //update Current Protocols in place415            $where1 = array('individual_meeting_id' => $individual_strategies_id);416            $individual_protocols_item = $this->common_model->get_records(NFC_CURRENT_PROTOCOLS_IN_PLACE, array('protocols_in_place_id'), '', '', $where1, '');417            if (!empty($individual_protocols_item)) {418                for ($i = 0; $i < count($individual_protocols_item); $i++) {419                    $update_protocols = '';420                    if (!empty(addslashes($postData['current_protocols_in_place_' . $individual_protocols_item[$i]['protocols_in_place_id']]))) {421                        $where1 = "yp_id =" . $postData['yp_id'] . " and protocols_in_place_id =" . $individual_protocols_item[$i]['protocols_in_place_id'];422                        $current_protocol_archive = $this->common_model->get_records(NFC_ARCHIVE_CURRENT_PROTOCOLS_IN_PLACE, array('archive_protocols_in_place_id,current_protocols_in_place'), '', '', $where1, '', '1', '', 'archive_protocols_in_place_id', 'desc', '', '');423                        if (!empty($current_protocol_archive)) {424                            $current_pro = strip_tags($postData['current_protocols_in_place_' . $individual_protocols_item[$i]['protocols_in_place_id']]);425                            $protocol = strip_tags($current_protocol_archive[0]['current_protocols_in_place']);426                            if ($current_pro != $protocol) {427                                $new_update++;428                            }429                        }430                        /* Start - Ritesh Rana : Mantis issue # 8931, Dt: 17th April 2018 */431                        $update_protocols['current_protocols_in_place'] = strip_slashes($this->input->post('current_protocols_in_place_' . $individual_protocols_item[$i]['protocols_in_place_id']));432                        $prev_protocol_data = $this->common_model->get_records(NFC_CURRENT_PROTOCOLS_IN_PLACE, array('*'), '', '', $where1);433                        if ($prev_protocol_data) {434                            $protocol_prev_info = $prev_protocol_data[0]['current_protocols_in_place'];435                            if ($protocol_prev_info != $update_protocols['current_protocols_in_place']) {436                                $update_protocols['modified_date'] = datetimeformat();437                            }438                        }439                        /* End - Ritesh Rana : Mantis issue # 8931, Dt: 17th April 2018 */440                        $where = array('protocols_in_place_id' => $individual_protocols_item[$i]['protocols_in_place_id']);441                        $success_update = $this->common_model->update(NFC_CURRENT_PROTOCOLS_IN_PLACE, $update_protocols, $where);442                    }443                }444            }445            //Insert new Current Protocols in place446            $protocols_name = $this->input->post('current_protocols_in_place');447            for ($i = 0; $i < count($protocols_name); $i++) {448                if (!empty($protocols_name[$i])) {449                    $new_change ++;450                    $protocols_data['individual_meeting_id'] = $individual_strategies_id;451                    $protocols_data['yp_id'] = $postData['yp_id'];452                    $protocols_data['current_protocols_in_place'] = strip_slashes($protocols_name[$i]);453                    $protocols_data['staff_initials'] = $this->session->userdata['LOGGED_IN']['ID'];454                    $protocols_data['created_date'] = datetimeformat();455                    $protocols_data['modified_date'] = datetimeformat();456                    $this->common_model->insert(NFC_CURRENT_PROTOCOLS_IN_PLACE, $protocols_data);457                }458            }459            /* end Current Protocols in place */460        }461        if (!empty($previous_data)) {462            if ($n != 0 || $new_update > 0 || $new_change > 0) {463                $this->common_model->update(INDIVIDUAL_STRATEGIES, $update_pre_data, array('yp_id' => $postData['yp_id'], 'is_previous_version' => 1, 'care_home_id' => $data_care_home_id['YP_details_care_home_id'][0]['care_home']));464            }465        } else {466            $this->common_model->insert(INDIVIDUAL_STRATEGIES, $update_pre_data);467        }468        $this->createArchive($postData['yp_id'], $individual_strategies_id, $new_change, $new_update);469        redirect('/' . $this->viewname . '/index/' . $data['yp_id']);470    }471    /*472      @Author : Ritesh Rana473      @Desc   : usr sign off functionality474      @Input    : yp_id,is_id475      @Output   :476      @Date   : 12/07/2017477     */478    public function manager_review($yp_id, $individual_strategies_id) {479        if (!empty($yp_id) && !empty($individual_strategies_id)) {480            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];481            $match = array('yp_id' => $yp_id, 'created_by' => $login_user_id, 'is_delete' => '0');482            $check_signoff_data = $this->common_model->get_records(INDIVIDUAL_MEETING_SIGNOFF, '', '', '', $match);483            if (empty($check_signoff_data) > 0) {484                $update_pre_data['yp_id'] = $yp_id;485                $update_pre_data['individual_meeting_id'] = $individual_strategies_id;486                $update_pre_data['created_date'] = datetimeformat();487                $update_pre_data['created_by'] = $this->session->userdata('LOGGED_IN')['ID'];488                if ($this->common_model->insert(INDIVIDUAL_MEETING_SIGNOFF, $update_pre_data)) {489                    $msg = $this->lang->line('successfully_strategies_review');490                    $this->session->set_flashdata('msg', "<div class='alert alert-success text-center'>$msg</div>");491                } else {492                    // error493                    $msg = $this->lang->line('error_msg');494                    $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");495                }496            } else {497                $msg = $this->lang->line('already_strategies_review');498                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");499            }500        } else {501            $msg = $this->lang->line('error_msg');502            $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");503        }504        redirect('/' . $this->viewname . '/index/' . $yp_id);505    }506     /*507      @Author : Niral Patel508      @Desc   : check edit page 509      @Input    :510      @Output   :511      @Date   : 18/08/2017512     */513    public function update_slug() {514        $postData = $this->input->post();515        $where = array('url_data' => $postData['url_data']);516        $this->common_model->delete(CHECK_EDIT_URL, $where);517        $update_pre_data['datetime'] = date('Y-m-d H:i:s');518        $update_pre_data['url_data'] = $postData['url_data'];519        $this->common_model->insert(CHECK_EDIT_URL, $update_pre_data);520        return TRUE;521    }522    /*523      @Author : Niral Patel524      @Desc   : Create archive525      @Input    :526      @Output   :527      @Date   : 18/08/2017528     */529    public function createArchive($id, $individual_strategies_id, $new_change, $new_update) {530        $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");531        $data_yp_detail['YP_details'] = YpDetails($id, $fields);532        if (is_numeric($id)) {533            //get ra form534            $match = array('is_form_id' => 1);535            $formsdata = $this->common_model->get_records(IS_FORM, '', '', '', $match);536            //get IS yp data537            $match = array('yp_id' => $id);538            $pp_yp_data = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, '', '', '', $match);539            /* edit by nikunj ghelani540              query for get medified date from individual strategie */541            if (!empty($formsdata) && !empty($pp_yp_data)) {542                $match = array('yp_id' => $id, 'is_previous_version' => 1);543                $data['prev_edit_data'] = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, '', '', '', $match);544                $last_modified_date = $data['prev_edit_data'][0]['modified_date'];545                $form_data = json_decode($formsdata[0]['form_json_data'], TRUE);546                $data = array();547                $i = 0;548                foreach ($form_data as $row) {549                    if (isset($row['name'])) {550                        if ($row['type'] != 'button') {551                            if ($row['type'] == 'checkbox-group') {552                                $form_data[$i]['value'] = implode(',', $pp_yp_data[0][$row['name']]);553                            } else {554                                /*changes done by Dhara Bhalala to manage single quote in json*/555                                $form_data[$i]['value'] = str_replace("'", "\'", $pp_yp_data[0][$row['name']]);556//                                $form_data[$i]['value'] = str_replace("'", '"', $pp_yp_data[0][$row['name']]);557                            }558                        }559                    }560                    $i++;561                }562                $archive = array(563                    'yp_id' => $id,564                    'form_json_data' => json_encode($form_data, TRUE),565                    'created_by' => $this->session->userdata('LOGGED_IN')['ID'],566                    'created_date' => datetimeformat(),567                    'modified_date' => $last_modified_date,568                    'modified_time' => date("H:i:s"),569                    'status' => 0,570                    'care_home_id' => $data_yp_detail['YP_details'][0]['care_home']571                );572                //get ra yp data573//                $wherestring = " form_json_data = '" . str_replace("\\", "\\\\", json_encode($form_data, TRUE)) . "'";574//                $pp_archive_data = $this->common_model->get_records(INDIVIDUAL_STRATEGIES_ARCHIVE, array('yp_id'), '', '', '', '', '', '', '', '', '', $wherestring);575                576                /*changes done by Dhara Bhalala to prevent auto archive when no updation changes*/577                $match = array('form_json_data' => json_encode($form_data, TRUE));578                $pp_archive_data = $this->common_model->get_records(INDIVIDUAL_STRATEGIES_ARCHIVE, array('yp_id'), '', '', $match);579                580                if (empty($pp_archive_data) || $new_change > 0 || $new_update > 0) {581                    //get ra yp data582                    $match = array('yp_id' => $id);583                    $archive_data = $this->common_model->get_records(INDIVIDUAL_STRATEGIES_ARCHIVE, '', '', '', $match);584                    if (!empty($archive_data)) {585                        //update status to archive586                        $update_archive = array(587                            'created_date' => datetimeformat(),588                            'modified_date' => $last_modified_date,589                            'modified_time' => date("H:i:s"),590                            'status' => 1,591                            'care_home_id' => $data_yp_detail['YP_details'][0]['care_home']592                        );593                        $where = array('status' => 0, 'yp_id' => $id);594                        $this->common_model->update(INDIVIDUAL_STRATEGIES_ARCHIVE, $update_archive, $where);595                    }596                    //insert archive data for next time597                    $this->common_model->insert(INDIVIDUAL_STRATEGIES_ARCHIVE, $archive);598                    $archive_individual_meeting_id = $this->db->insert_id();599                    $table = NFC_AMENDMENTS;600                    $match = array('yp_id' => $id);601                    $field = array('*');602                    $amendment_data = $this->common_model->get_records($table, $field, '', '', $match);603                    if (!empty($amendment_data)) {604                        foreach ($amendment_data as $data) {605                            $amendment['amendments_id'] = $data['amendments_id'];606                            $amendment['archive_individual_meeting_id'] = $archive_individual_meeting_id;607                            $amendment['yp_id'] = $data['yp_id'];608                            $amendment['amendments'] = ucfirst($data['amendments']);609                            $amendment['staff_initials'] = $data['staff_initials'];610                            $amendment['amendments_modified_date'] = $data['modified_date'];611                            $amendment['created_date'] = datetimeformat();612                            $this->common_model->insert(NFC_ARCHIVE_AMENDMENTS, $amendment);613                        }614                    }615                    $table = NFC_CURRENT_PROTOCOLS_IN_PLACE;616                    $match = array('yp_id' => $id);617                    $field = array('*');618                    $protocols_details = $this->common_model->get_records($table, $field, '', '', $match);619                    if (!empty($protocols_details)) {620                        foreach ($protocols_details as $protocols_data) {621                            $protocols['protocols_in_place_id'] = $protocols_data['protocols_in_place_id'];622                            $protocols['yp_id'] = $protocols_data['yp_id'];623                            $protocols['archive_individual_meeting_id'] = $archive_individual_meeting_id;624                            $protocols['current_protocols_in_place'] = ucfirst($protocols_data['current_protocols_in_place']);625                            $protocols['staff_initials'] = $protocols_data['staff_initials'];626                            $protocols['created_date'] = datetimeformat();627                            $protocols['protocol_modified_date'] = $protocols_data['modified_date'];628                            $this->common_model->insert(NFC_ARCHIVE_CURRENT_PROTOCOLS_IN_PLACE, $protocols);629                        }630                    }631                    if ($archive_individual_meeting_id > 1) {632                        $archive_individual_meeting_id = $archive_individual_meeting_id - 1;633                    }634                    $table = INDIVIDUAL_MEETING_SIGNOFF;635                    $match = array('yp_id' => $id, 'individual_meeting_id' => $pp_yp_data[0]['individual_strategies_id'], 'is_delete' => '0');636                    $field = array('yp_id,individual_meeting_id,created_by');637                    $signoff_details = $this->common_model->get_records($table, $field, '', '', $match);638                    if (!empty($signoff_details)) {639                        foreach ($signoff_details as $signoff_data) {640                            $signoff['yp_id'] = $signoff_data['yp_id'];641                            $signoff['archive_individual_meeting_id'] = $archive_individual_meeting_id;642                            $signoff['individual_meeting_id'] = ucfirst($signoff_data['individual_meeting_id']);643                            $signoff['created_by'] = $signoff_data['created_by'];644                            $signoff['created_date'] = datetimeformat();645                            $this->common_model->insert(NFC_ARCHIVE_INDIVIDUAL_MEETING_SIGNOFF, $signoff);646                        }647                        $archive = array('is_delete' => 1);648                        $where = array('yp_id' => $id);649                        $this->common_model->update(INDIVIDUAL_MEETING_SIGNOFF, $archive, $where);650                    }651                    return TRUE;652                } else {653                    return TRUE;654                }655            } else {656                return TRUE;657            }658        } else {659            show_404();660        }661    }662    /*663      @Author : Ritesh Rana664      @Desc   : open popup for Signoff / Approval functionality665      @Input    : yp_id,is_id666      @Output   :667      @Date   : 12/07/2017668     */669    public function signoff($yp_id = '', $is_id = '') {670        $this->formValidation();671         $fields = array("care_home");672        $data['YP_details'] = YpDetails($yp_id,$fields);673        $data['care_home_id'] = $data['YP_details'][0]['care_home'];674        $main_user_data = $this->session->userdata('LOGGED_IN');675        if ($this->form_validation->run() == FALSE) {676            $data['footerJs'][0] = base_url('uploads/custom/js/IndividualStrategies/IndividualStrategies.js');677            $data['crnt_view'] = $this->viewname;678            $data['ypid'] = $yp_id;679            $data['is_id'] = $is_id;680            //get social info681            $table = SOCIAL_WORKER_DETAILS . ' as sw';682            $match = array("sw.yp_id" => $yp_id);683            $fields = array("sw.social_worker_id,sw.social_worker_firstname,sw.social_worker_surname");684            $data['social_worker_data'] = $this->common_model->get_records($table, $fields, '', '', $match);685            //get parent info686            $table = PARENT_CARER_INFORMATION . ' as pc';687            $match = array("pc.yp_id" => $yp_id, 'pc.is_deleted' => 0);688            $fields = array("pc.parent_carer_id,pc.firstname,pc.surname");689            $data['parent_data'] = $this->common_model->get_records($table, $fields, '', '', $match);690            //Get Records From Login Table691            $data['form_action_path'] = $this->viewname . '/signoff';692            $data['header'] = array('menu_module' => 'YoungPerson');693            $data['validation'] = validation_errors();694            if (!empty($data['validation'])) {695                $data['main_content'] = '/signoff';696                $this->parser->parse('layouts/DefaultTemplate', $data);697            } else {698                $this->load->view('/signoff', $data);699            }700        } else {701            $this->insertdata();702        }703    }704    /*705      @Author : Ritesh Rana706      @Desc   : insert Signoff / Approval functionality707      @Input    : yp_id,is_id708      @Output   :709      @Date   : 12/07/2017710     */711    public function insertdata() {712        $postdata = $this->input->post();713        $ypid = $postdata['ypid'];714        $is_id = $postdata['is_id'];715        $user_type = $postdata['user_type'];716        // insert parent details717        if ($user_type == 'parent') {718            $parent_data['firstname'] = strip_tags($postdata['fname']);719            $parent_data['surname'] = strip_tags($postdata['lname']);720            $parent_data['relationship'] = strip_tags($postdata['relationship']);721            $parent_data['address'] = strip_tags($postdata['address']);722            $parent_data['contact_number'] = strip_tags($postdata['contact_number']);723            $parent_data['email_address'] = strip_tags($postdata['email']);724            $parent_data['yp_authorised_communication'] = strip_tags($postdata['yp_authorised_communication']);725            $parent_data['carer_authorised_communication'] = strip_tags($postdata['carer_authorised_communication']);726            $parent_data['yp_authorised_communication'] = strip_tags($postdata['yp_authorised_communication']);727            $parent_data['comments'] = strip_tags($postdata['comments']);728            $parent_data['created_date'] = datetimeformat();729            $parent_data['created_by'] = $this->session->userdata['LOGGED_IN']['ID'];730            $parent_data['yp_id'] = $this->input->post('ypid');731            $parent_data['care_home_id'] = $this->input->post('care_home_id');732            $success = $this->common_model->insert(PARENT_CARER_INFORMATION, $parent_data);733            //Insert log activity734            $activity = array(735                'user_id' => $this->session->userdata['LOGGED_IN']['ID'],736                'yp_id' => !empty($postdata['ypid']) ? $postdata['ypid'] : '',737                'module_name' => IS_PARENT_CARER_DETAILS_YP,738                'module_field_name' => '',739                'type' => 1740            );741            log_activity($activity);742        }743        //Current Login detail744        $main_user_data = $this->session->userdata('LOGGED_IN');745        if (!validateFormSecret()) {746            $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>" . lang('error') . "</div>");747            redirect('YoungPerson/view/' . $ypid);748        }749        $data['crnt_view'] = $this->viewname;750        $match = array('is_form_id' => 1);751        $formsdata = $this->common_model->get_records(IS_FORM, '', '', '', $match);752        //get ra yp data753        $match = array('yp_id' => $ypid);754        $pp_yp_data = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, '', '', '', $match);755        if (!empty($formsdata) && !empty($pp_yp_data)) {756            $form_data = json_decode($formsdata[0]['form_json_data'], TRUE);757            $data = array();758            $i = 0;759            foreach ($form_data as $row) {760                if (isset($row['name'])) {761                    if ($row['type'] != 'button') {762                        if ($row['type'] == 'checkbox-group') {763                            $form_data[$i]['value'] = implode(',', $pp_yp_data[0][$row['name']]);764                        } else {765                            $form_data[$i]['value'] = str_replace("'", '"', $pp_yp_data[0][$row['name']]);766                        }767                    }768                }769                $i++;770            }771        }772        $data = array(773            'user_type' => ucfirst($postdata['user_type']),774            'yp_id' => ucfirst($postdata['ypid']),775            'is_id' => ucfirst($postdata['is_id']),776            'form_json_data' => json_encode($form_data, TRUE),777            'fname' => ucfirst($postdata['fname']),778            'lname' => ucfirst($postdata['lname']),779            'email' => $postdata['email'],780            'key_data' => md5($postdata['email']),781            'created_date' => datetimeformat(),782            'created_by' => $main_user_data['ID'],783            'updated_by' => $main_user_data['ID'],784            'care_home_id' => $postdata['care_home_id'],785        );786        //Insert Record in Database787        if ($this->common_model->insert(NFC_IS_SIGNOFF_DETAILS, $data)) {788            $signoff_id = $this->db->insert_id();789            $table = NFC_AMENDMENTS;790            $match = array('yp_id' => $ypid);791            $field = array('amendments_id,yp_id,amendments,staff_initials');792            $amendment_data = $this->common_model->get_records($table, $field, '', '', $match);793            if (!empty($amendment_data)) {794                foreach ($amendment_data as $data_amendment) {795                    $amendment['amendments_id'] = $data_amendment['amendments_id'];796                    $amendment['approval_individual_meeting_id'] = $signoff_id;797                    $amendment['yp_id'] = $data_amendment['yp_id'];798                    $amendment['amendments'] = ucfirst($data_amendment['amendments']);799                    $amendment['staff_initials'] = $data_amendment['staff_initials'];800                    $amendment['created_date'] = datetimeformat();801                    $this->common_model->insert(NFC_APPROVAL_AMENDMENTS, $amendment);802                }803            }804            $table = NFC_CURRENT_PROTOCOLS_IN_PLACE;805            $match = array('yp_id' => $ypid);806            $field = array('protocols_in_place_id,yp_id,current_protocols_in_place,staff_initials');807            $protocols_details = $this->common_model->get_records($table, $field, '', '', $match);808            if (!empty($protocols_details)) {809                foreach ($protocols_details as $protocols_data) {810                    $protocols['protocols_in_place_id'] = $protocols_data['protocols_in_place_id'];811                    $protocols['yp_id'] = $protocols_data['yp_id'];812                    $protocols['approval_individual_meeting_id'] = $signoff_id;813                    $protocols['current_protocols_in_place'] = ucfirst($protocols_data['current_protocols_in_place']);814                    $protocols['staff_initials'] = $protocols_data['staff_initials'];815                    $protocols['created_date'] = datetimeformat();816                    $this->common_model->insert(NFC_APPROVAL_CURRENT_PROTOCOLS_IN_PLACE, $protocols);817                }818            }819            $table = INDIVIDUAL_MEETING_SIGNOFF;820            $match = array('yp_id' => $ypid, 'is_delete' => '0');821            $field = array('yp_id,created_by');822            $signoff_data = $this->common_model->get_records($table, $field, '', '', $match);823            if (!empty($signoff_data)) {824                foreach ($signoff_data as $approval_value) {825                    $update_arc_data['approval_is_id'] = $signoff_id;826                    $update_arc_data['yp_id'] = $approval_value['yp_id'];827                    $update_arc_data['created_date'] = datetimeformat();828                    $update_arc_data['created_by'] = $approval_value['created_by'];829                    $this->common_model->insert(NFC_APPROVAL_INDIVIDUAL_MEETING_SIGNOFF, $update_arc_data);830                }831            }832            $this->sendMailToRelation($data, $signoff_id); // send mail833            $msg = $this->lang->line('successfully_sign_off');834            $this->session->set_flashdata('msg', "<div class='alert alert-success text-center'>$msg</div>");835        } else {836            // error837            $msg = $this->lang->line('error_msg');838            $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");839        }840        redirect('IndividualStrategies/index/' . $ypid);841    }842    /*843      @Author : Ritesh Rana844      @Desc   : Send email for Signoff / Approval functionality845      @Input    : yp_id,is_id846      @Output   :847      @Date   : 12/07/2017848     */849    private function sendMailToRelation($data = array(), $signoff_id) {850        if (!empty($data) && is_numeric($signoff_id)) {851            if (!empty($data['yp_id'])) {852                $match = array("yp_id" => $data['yp_id']);853                $fields = array("concat(yp_fname,' ',yp_lname) as yp_name");854                $YP_details = $this->common_model->get_records(YP_DETAILS, $fields, '', '', $match);855            }856            $yp_name = !empty($YP_details[0]['yp_name']) ? $YP_details[0]['yp_name'] : "";857            /* Send Created Customer password with Link */858            $toEmailId = $data['email'];859            $customerName = $data['fname'] . ' ' . $data['lname'];860            $email = md5($toEmailId);861            $loginLink = base_url('IndividualStrategies/signoffData/' . $data['yp_id'] . '/' . $signoff_id . '/' . $email);862            $find = array('{NAME}', '{LINK}');863            $replace = array(864                'NAME' => $customerName,865                'LINK' => $loginLink,866            );867            $emailSubject = 'Welcome to NFCTracker';868            $emailBody = '<div>'869                    . '<p>Hello {NAME} ,</p> '870                    . '<p>Please find Individual Strategies for ' . $yp_name . ' for your approval.</p> '871                    . "<p>For security purposes, Please do not forward this email on to any other person. It is for the recipient only and if this is sent in error please advise itsupport@newforestcare.co.uk and delete this email. This link is only valid for " . REPORT_EXPAIRED_HOUR . ", should this not be signed off within " . REPORT_EXPAIRED_HOUR . " of recieving then please request again</p>"872                    . '<p> <a href="{LINK}">click here</a> </p> '873                    . '<div>';874            $finalEmailBody = str_replace($find, $replace, $emailBody);875            return $this->common_model->sendEmail($toEmailId, $emailSubject, $finalEmailBody, FROM_EMAIL_ID);876        }877        return true;878    }879    public function formValidation($id = null) {880        $this->form_validation->set_rules('fname', 'Firstname', 'trim|required|min_length[2]|max_length[100]|xss_clean');881        $this->form_validation->set_rules('lname', 'Lastname', 'trim|required|min_length[2]|max_length[100]|xss_clean');882        $this->form_validation->set_rules('email', 'Email', 'trim|required|xss_clean');883    }884    /*885      @Author : Ritesh Rana886      @Desc   : View Signoff / Approval functionality887      @Input    : yp_id,email_id and sign off id888      @Output   :889      @Date   : 12/07/2017890     */891    public function signoffData($id, $signoff_id, $email) {892        if (is_numeric($id) && is_numeric($signoff_id) && !empty($email)) {893            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];894            $match = array('yp_id' => $id, 'is_signoff_details_id' => $signoff_id, 'key_data' => $email, 'status' => 'inactive');895            $check_signoff_data = $this->common_model->get_records(NFC_IS_SIGNOFF_DETAILS, array("*"), '', '', $match);896            if (!empty($check_signoff_data)) {897                $expairedDate = date('Y-m-d H:i:s', strtotime($check_signoff_data[0]['created_date'] . REPORT_EXPAIRED_DAYS));898                if (strtotime(datetimeformat()) <= strtotime($expairedDate)) {899                    $data['form_data'] = json_decode($check_signoff_data[0]['form_json_data'], TRUE);900                    //get YP information901                    $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");902                    $data['YP_details'] = YpDetails($id,$fields);903                    if (empty($data['YP_details'])) {904                        $msg = $this->lang->line('common_no_record_found');905                        $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");906                        redirect('YoungPerson/view/' . $id);907                    }908                    //get Amendments data909                    $table = NFC_APPROVAL_AMENDMENTS . ' as do';910                    $match = array('do.yp_id' => $id, 'approval_individual_meeting_id' => $signoff_id);911                    $fields = array("do.amendments,do.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name");912                    $join_tables = array(LOGIN . ' as l' => 'l.login_id= do.staff_initials');913                    $data['item_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);914                    //get current protocols in place915                    $table = NFC_APPROVAL_CURRENT_PROTOCOLS_IN_PLACE . ' as cpip';916                    $match = array('cpip.yp_id' => $id, 'approval_individual_meeting_id' => $signoff_id);917                    $fields = array("cpip.current_protocols_in_place,cpip.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name");918                    $join_tables = array(LOGIN . ' as l' => 'l.login_id= cpip.staff_initials');919                    $data['protocols_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);920                    //get IS Signoff datat 921                    $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];922                    $table = INDIVIDUAL_MEETING_SIGNOFF . ' as ims';923                    $where = array("l.is_delete" => "0", "ims.yp_id" => $id, "ims.is_delete" => "0");924                    $fields = array("ims.created_by,ims.created_date,ims.yp_id, CONCAT(`firstname`,' ', `lastname`) as name");925                    $join_tables = array(LOGIN . ' as l' => 'l.login_id=ims.created_by');926                    $group_by = array('created_by');927                    $data['ra_signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', $group_by, $where);928                    //get IS old yp data929                    $data['key_data'] = $email;930                    $data['ypid'] = $id;931                    $data['signoff_id'] = $signoff_id;932                    $match = array('yp_id' => $id, 'is_previous_version' => 1);933                    $data['prev_edit_data'] = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, '', '', '', $match);934                    $data['header'] = array('menu_module' => 'YoungPerson');935                    $data['footerJs'][0] = base_url('uploads/custom/js/IndividualStrategies/IndividualStrategies.js');936                    $data['crnt_view'] = $this->viewname;937                    $data['main_content'] = '/signoff_view';938                    $this->parser->parse('layouts/DefaultTemplate', $data);939                } else {940                    $msg = lang('link_expired');941                    $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>")942                    ;943                    $this->load->view('successfully_message');944                }945            } else {946                $msg = $this->lang->line('already_is_review');947                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");948                $this->load->view('successfully_message');949            }950            //get pp form951        } else {952            show_404();953        }954    }955    /*956      @Author : Ritesh Rana957      @Desc   : review data for Signoff / Approval view page958      @Input    : yp_id,signoff_id,email_id959      @Output   :960      @Date   : 12/07/2017961     */962    public function signoff_review_data($yp_id, $signoff_id, $email) {963        if (!empty($yp_id) && !empty($signoff_id) && !empty($email)) {964            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];965            $match = array('yp_id' => $yp_id, 'is_signoff_details_id' => $signoff_id, 'key_data' => $email, 'status' => 'inactive');966            $check_signoff_data = $this->common_model->get_records(NFC_IS_SIGNOFF_DETAILS, array("form_json_data,created_date,key_data"), '', '', $match);967            if (!empty($check_signoff_data)) {968                $expairedDate = date('Y-m-d H:i:s', strtotime($check_signoff_data[0]['created_date'] . REPORT_EXPAIRED_DAYS));969                if (strtotime(datetimeformat()) <= strtotime($expairedDate)) {970                    $u_data['status'] = 'active';971                    $u_data['modified_date'] = datetimeformat();972                    $success = $this->common_model->update(NFC_IS_SIGNOFF_DETAILS, $u_data, array('is_signoff_details_id' => $signoff_id, 'yp_id' => $yp_id, 'key_data' => $email));973                    if ($success) {974                        $msg = $this->lang->line('successfully_is_review');975                        $this->session->set_flashdata('signoff_review_msg', "<div class='alert alert-success text-center'>$msg</div>");976                    } else {977                        // error978                        $msg = $this->lang->line('error_msg');979                        $this->session->set_flashdata('signoff_review_msg', "<div class='alert alert-danger text-center'>$msg</div>");980                    }981                } else {982                    $msg = lang('link_expired');983                    $this->session->set_flashdata('signoff_review_msg', "<div class='alert alert-danger text-center'>$msg</div>")984                    ;985                }986            } else {987                $msg = $this->lang->line('already_is_review');988                $this->session->set_flashdata('signoff_review_msg', "<div class='alert alert-danger text-center'>$msg</div>");989            }990        } else {991            $msg = $this->lang->line('error_msg');992            $this->session->set_flashdata('signoff_review_msg', "<div class='alert alert-danger text-center'>$msg</div>");993        }994        $this->load->view('successfully_message');995    }996    /*997      @Author : Niral Patel998      @Desc   : get user type detail999      @Input  :1000      @Output :1001      @Date   : 28/03/20181002     */1003    public function getUserTypeDetail() {1004        $postdata = $this->input->post();1005        $user_type = !empty($postdata['user_type']) ? $postdata['user_type'] : '';1006        $id = $postdata['id'];1007        $ypid = $postdata['ypid'];1008        $table = YP_DETAILS . ' as yp';1009        $match = "yp.yp_id = " . $ypid;1010        $fields = array("yp.*,swd.social_worker_firstname,swd.social_worker_surname,swd.landline,swd.mobile,swd.email,swd.senior_social_worker_firstname,swd.senior_social_worker_surname,oyp.pen_portrait,swd.other,pc.firstname,pc.surname,pc.relationship,pc.address,pc.contact_number,pc.email_address,pc.yp_authorised_communication,pc.carer_authorised_communication,pc.comments");1011        $join_tables = array(SOCIAL_WORKER_DETAILS . ' as swd' => 'swd.yp_id= yp.yp_id', PARENT_CARER_INFORMATION . ' as pc' => 'pc.yp_id= yp.yp_id', OVERVIEW_OF_YOUNG_PERSON . ' as oyp' => 'oyp.yp_id= yp.yp_id');1012        $data['editRecord'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);1013        if ($user_type == 'parent_data') {1014            //get parent info1015            $table = PARENT_CARER_INFORMATION . ' as pc';1016            $match = array("pc.parent_carer_id" => $id, 'pc.is_deleted' => 0);1017            $fields = array("pc.*");1018            $data['parent_data'] = $this->common_model->get_records($table, $fields, '', '', $match);1019            $data['editRecord'][0]['fname'] = $data['editRecord'][0]['firstname'];1020            $data['editRecord'][0]['lname'] = $data['editRecord'][0]['surname'];1021            $data['editRecord'][0]['email_id'] = $data['editRecord'][0]['email_address'];1022        } else if ($user_type == 'social_data') {1023            //get social info1024            $table = SOCIAL_WORKER_DETAILS . ' as sw';1025            $match = array("sw.social_worker_id" => $id);1026            $fields = array("sw.*");1027            $data['social_worker_data'] = $this->common_model->get_records($table, $fields, '', '', $match);1028            $data['editRecord'][0]['fname'] = $data['editRecord'][0]['social_worker_firstname'];1029            $data['editRecord'][0]['lname'] = $data['editRecord'][0]['social_worker_surname'];1030            $data['editRecord'][0]['email_id'] = $data['editRecord'][0]['email'];1031        }1032        $data['user_type'] = $user_type;1033        $this->load->view($this->viewname . '/signoff_ajax', $data);1034    }1035    /*1036      @Author : Ritesh rana1037      @Desc   : view id data1038      @Input  :1039      @Output :1040      @Date   : 13/04/20181041     */1042    public function external_approval_list($ypid, $is_id) {1043        if (is_numeric($ypid) && is_numeric($is_id)) {1044            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");1045            $data['YP_details'] = YpDetails($ypid,$fields);1046            if (empty($data['YP_details'])) {1047                $msg = $this->lang->line('common_no_record_found');1048                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");1049                redirect('YoungPerson/view/' . $ypid);1050            }1051            $searchtext = $perpage = '';1052            $searchtext = $this->input->post('searchtext');1053            $sortfield = $this->input->post('sortfield');1054            $sortby = $this->input->post('sortby');1055            $perpage = 10;1056            $allflag = $this->input->post('allflag');1057            if (!empty($allflag) && ($allflag == 'all' || $allflag == 'changesorting' || $allflag == 'changesearch')) {1058                $this->session->unset_userdata('is_approval_session_data');1059            }1060            $searchsort_session = $this->session->userdata('is_approval_session_data');1061            //Sorting1062            if (!empty($sortfield) && !empty($sortby)) {1063                $data['sortfield'] = $sortfield;1064                $data['sortby'] = $sortby;1065            } else {1066                if (!empty($searchsort_session['sortfield'])) {1067                    $data['sortfield'] = $searchsort_session['sortfield'];1068                    $data['sortby'] = $searchsort_session['sortby'];1069                    $sortfield = $searchsort_session['sortfield'];1070                    $sortby = $searchsort_session['sortby'];1071                } else {1072                    $sortfield = 'is_signoff_details_id';1073                    $sortby = 'desc';1074                    $data['sortfield'] = $sortfield;1075                    $data['sortby'] = $sortby;1076                }1077            }1078            //Search text1079            if (!empty($searchtext)) {1080                $data['searchtext'] = $searchtext;1081            } else {1082                if (empty($allflag) && !empty($searchsort_session['searchtext'])) {1083                    $data['searchtext'] = $searchsort_session['searchtext'];1084                    $searchtext = $data['searchtext'];1085                } else {1086                    $data['searchtext'] = '';1087                }1088            }1089            if (!empty($perpage) && $perpage != 'null') {1090                $data['perpage'] = $perpage;1091                $config['per_page'] = $perpage;1092            } else {1093                if (!empty($searchsort_session['perpage'])) {1094                    $data['perpage'] = trim($searchsort_session['perpage']);1095                    $config['per_page'] = trim($searchsort_session['perpage']);1096                } else {1097                    $config['per_page'] = '10';1098                    $data['perpage'] = '10';1099                }1100            }1101            //pagination configuration1102            $config['first_link'] = 'First';1103            $config['base_url'] = base_url() . $this->viewname . '/external_approval_list/' . $ypid . '/' . $is_id;1104            if (!empty($allflag) && ($allflag == 'all' || $allflag == 'changesorting' || $allflag == 'changesearch')) {1105                $config['uri_segment'] = 0;1106                $uri_segment = 0;1107            } else {1108                $config['uri_segment'] = 5;1109                $uri_segment = $this->uri->segment(5);1110            }1111            //Query1112            $table = NFC_IS_SIGNOFF_DETAILS . ' as com';1113            $where = array("com.yp_id" => $ypid, "com.is_id" => $is_id);1114            $fields = array("c.care_home_name,com.*,CONCAT(`firstname`,' ', `lastname`) as create_name ,CONCAT(`fname`,' ', `lname`) as user_name");1115            $join_tables = array(LOGIN . ' as l' => 'l.login_id= com.created_by', CARE_HOME . ' as c' => 'c.care_home_id= com.care_home_id');1116            if (!empty($searchtext)) {1117                1118            } else {1119                $data['information'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', $config['per_page'], $uri_segment, $sortfield, $sortby, '', $where);1120                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', $sortfield, $sortby, '', $where, '', '', '1');1121            }1122            $data['ypid'] = $ypid;1123            $data['is_id'] = $is_id;1124            $this->ajax_pagination->initialize($config);1125            $data['pagination'] = $this->ajax_pagination->create_links();1126            $data['uri_segment'] = $uri_segment;1127            $sortsearchpage_data = array(1128                'sortfield' => $data['sortfield'],1129                'sortby' => $data['sortby'],1130                'searchtext' => $data['searchtext'],1131                'perpage' => trim($data['perpage']),1132                'uri_segment' => $uri_segment,1133                'total_rows' => $config['total_rows']);1134            $this->session->set_userdata('is_approval_session_data', $sortsearchpage_data);1135            setActiveSession('is_approval_session_data'); // set current Session active1136            $data['header'] = array('menu_module' => 'Communication');1137            //get communication form1138            $data['crnt_view'] = $this->viewname;1139            $data['footerJs'][0] = base_url('uploads/custom/js/IndividualStrategies/IndividualStrategies.js');1140            $data['header'] = array('menu_module' => 'YoungPerson');1141            if ($this->input->post('result_type') == 'ajax') {1142                $this->load->view($this->viewname . '/approval_ajaxlist', $data);1143            } else {1144                $data['main_content'] = '/is_list';1145                $this->parser->parse('layouts/DefaultTemplate', $data);1146            }1147        } else {1148            show_404();1149        }1150    }1151     /*1152      @Author : Ritesh rana1153      @Desc   : view approval IS1154      @Input  :1155      @Output :1156      @Date   : 13/04/20181157     */1158    public function viewApprovalIs($id, $ypid) {1159        if (is_numeric($id) && is_numeric($ypid)) {1160            //get archive pp data1161            $match = array('is_signoff_details_id' => $id);1162            $formsdata = $this->common_model->get_records(NFC_IS_SIGNOFF_DETAILS, '', '', '', $match);1163            $data['formsdata'] = $formsdata;1164            if (!empty($formsdata)) {1165                $data['pp_form_data'] = json_decode($formsdata[0]['form_json_data'], TRUE);1166            }1167            //get YP information1168            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");1169            $data['YP_details'] = YpDetails($ypid,$fields);1170            if (empty($data['YP_details'])) {1171                $msg = $this->lang->line('common_no_record_found');1172                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");1173                redirect('YoungPerson/view/' . $ypid);1174            }1175            //get approval individual behaviour plan signoff1176            $table = NFC_APPROVAL_INDIVIDUAL_BEHAVIOUR_PLAN_SIGNOFF . ' as ibp';1177            $where = array("l.is_delete" => "0", "ibp.yp_id" => $ypid, "ibp.is_delete" => "0", "approval_ibp_id" => $id);1178            $fields = array("ibp.created_by,ibp.created_date,ibp.yp_id, CONCAT(`firstname`,' ', `lastname`) as name");1179            $join_tables = array(LOGIN . ' as l' => 'l.login_id=ibp.created_by');1180            $group_by = array('created_by');1181            $data['signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', $group_by, $where);1182            //get approval amendments1183            $table = NFC_APPROVAL_AMENDMENTS . ' as do';1184            $match = array('do.yp_id' => $ypid, 'approval_individual_meeting_id' => $id);1185            $fields = array("do.amendments,do.amendments_id,do.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name");1186            $join_tables = array(LOGIN . ' as l' => 'l.login_id= do.staff_initials');1187            $data['item_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);1188            1189            //get approval current protocols in place1190            $table = NFC_APPROVAL_CURRENT_PROTOCOLS_IN_PLACE . ' as cpip';1191            $match = array('cpip.yp_id' => $ypid, 'approval_individual_meeting_id' => $id);1192            $fields = array("cpip.protocols_in_place_id,cpip.current_protocols_in_place,cpip.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name");1193            $join_tables = array(LOGIN . ' as l' => 'l.login_id= cpip.staff_initials');1194            $data['protocols_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);1195            1196            $table = NFC_APPROVAL_INDIVIDUAL_MEETING_SIGNOFF . ' as is';1197            $where = array("l.is_delete" => "0", "is.yp_id" => $ypid, "is.is_delete" => "0", "approval_is_id" => $id);1198            $fields = array("is.created_by,is.created_date,is.yp_id, CONCAT(`firstname`,' ', `lastname`) as name");1199            $join_tables = array(LOGIN . ' as l' => 'l.login_id=is.created_by');1200            $group_by = array('created_by');1201            $data['signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', $group_by, $where);1202            $data['ypid'] = $ypid;1203            $data['is_id'] = $formsdata[0]['is_id'];1204            $data['footerJs'][0] = base_url('uploads/custom/js/IndividualStrategies/IndividualStrategies.js');1205            $data['crnt_view'] = $this->viewname;1206            $data['header'] = array('menu_module' => 'YoungPerson');1207            $data['main_content'] = '/approval_view';1208            $this->parser->parse('layouts/DefaultTemplate', $data);1209        } else {1210            show_404();1211        }1212    }1213    /*1214      @Author : Ritesh rana1215      @Desc   : resend external approval1216      @Input  :1217      @Output :1218      @Date   : 13/04/20181219     */1220    public function resend_external_approval($signoff_id, $ypid, $isid) {1221        $match = array('is_signoff_details_id' => $signoff_id);1222        $signoff_data = $this->common_model->get_records(NFC_IS_SIGNOFF_DETAILS, array("yp_id,fname,lname,email"), '', '', $match);1223        if (!empty($signoff_data)) {1224            $data = array(1225                'yp_id' => ucfirst($signoff_data[0]['yp_id']),1226                'fname' => ucfirst($signoff_data[0]['fname']),1227                'lname' => ucfirst($signoff_data[0]['lname']),1228                'email' => $signoff_data[0]['email']1229            );1230            $sent = $this->sendMailToRelation($data, $signoff_id); // send mail1231            if ($sent) {1232                $u_data['created_date'] = datetimeformat();1233                $u_data['modified_date'] = NULL;1234                $success = $this->common_model->update(NFC_IS_SIGNOFF_DETAILS, $u_data, array('is_signoff_details_id' => $signoff_id));1235                $msg = $this->lang->line('mail_sent_successfully');1236                $this->session->set_flashdata('msg', "<div class='alert alert-success text-center'>$msg</div>");1237            } else {1238                $msg = $this->lang->line('error');1239                $this->session->set_flashdata('msg', "<div class='alert alert-success text-center'>$msg</div>");1240            }1241        }1242        redirect($this->viewname . '/external_approval_list/' . $ypid . '/' . $isid);1243    }1244/*1245      @Author : Ritesh rana1246      @Desc   : Download Pdf1247      @Input  :1248      @Output :1249      @Date   : 13/04/20181250     */1251    public function DownloadPdf($individual_strategies_id, $yp_id) {1252        $data = [];1253        $match = array('is_form_id' => 1);1254        $ra_forms = $this->common_model->get_records(IS_FORM, '', '', '', $match);1255        if (!empty($ra_forms)) {1256            $data['ra_form_data'] = json_decode($ra_forms[0]['form_json_data'], TRUE);1257        }1258        //get YP information1259        $data['id'] = $yp_id;1260        $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");1261        $data['YP_details'] = YpDetails($yp_id,$fields);1262        //get amendments1263        $table = NFC_AMENDMENTS . ' as do';1264        $match = array('do.yp_id' => $yp_id, 'do.individual_meeting_id' => $individual_strategies_id);1265        $fields = array("do.amendments,do.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name");1266        $join_tables = array(LOGIN . ' as l' => 'l.login_id= do.staff_initials');1267        $data['item_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);1268        //get current protocols in place1269        $table = NFC_CURRENT_PROTOCOLS_IN_PLACE . ' as cpip';1270        $match = array('cpip.yp_id' => $yp_id, 'cpip.individual_meeting_id' => $individual_strategies_id);1271        $fields = array("cpip.current_protocols_in_place,cpip.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name");1272        $join_tables = array(LOGIN . ' as l' => 'l.login_id= cpip.staff_initials');1273        $data['protocols_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);1274        1275        //get individual meeting signoff     1276        $table = INDIVIDUAL_MEETING_SIGNOFF . ' as ims';1277        $where = array("l.is_delete" => "0", "ims.yp_id" => $yp_id, "ims.individual_meeting_id" => $individual_strategies_id);1278        $fields = array("ims.created_by,ims.yp_id, CONCAT(`firstname`,' ', `lastname`) as name");1279        $join_tables = array(LOGIN . ' as l' => 'l.login_id=ims.created_by');1280        $group_by = array('created_by');1281        $data['signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', $group_by, $where);1282        //get individual signoff details1283        $table = NFC_IS_SIGNOFF_DETAILS . ' as sd';1284        $match_social = array('sd.yp_id' => $yp_id, 'sd.is_id' => $individual_strategies_id, 'sd.status' => 'active');1285        $social_where_in = array("sd.user_type" => ['Social_worker', 'Social_data']);1286        $match_parent = array('sd.yp_id' => $yp_id, 'sd.is_id' => $individual_strategies_id, 'sd.status' => 'active');1287        $parent_where_in = array("sd.user_type" => ['Parent', 'Parent_data']);1288        $match_other = array('sd.yp_id' => $yp_id, 'sd.is_id' => $individual_strategies_id, "sd.user_type" => "Other", 'sd.status' => 'active');1289        $fields = array("sd.*,CONCAT(sd.fname,' ', sd.lname) as staff_name");1290        $data['social_worker_signoff'] = $this->common_model->get_records($table, $fields, '', '', $match_social, '', '', '', '', '', '', '', '', $social_where_in);1291        $data['parent_signoff'] = $this->common_model->get_records($table, $fields, '', '', $match_parent, '', '', '', '', '', '', '', '', $parent_where_in);1292        $data['other_signoff'] = $this->common_model->get_records($table, $fields, '', '', $match_other);1293        //get IS yp data1294        $table = INDIVIDUAL_STRATEGIES . ' as cpm';1295        $match = array('cpm.yp_id' => $yp_id, 'cpm.individual_strategies_id' => $individual_strategies_id);1296        $fields = array("cpm.*,CONCAT(l.firstname,' ', l.lastname) as create_name");1297        $join_tables = array(LOGIN . ' as l' => 'l.login_id = cpm.created_by');1298        $data['edit_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);1299        $data['crnt_view'] = $this->viewname;1300        $data['ypid'] = $yp_id;1301        //new1302        $pdfFileName = "individual_strategies.pdf";1303        $PDFInformation['yp_details'] = $data['YP_details'][0];1304        $PDFInformation['edit_data'] = $data['edit_data'][0]['modified_date'];1305        $PDFHeaderHTML = $this->load->view('isrpdfHeader', $PDFInformation, true);1306        $PDFFooterHTML = $this->load->view('isrpdfFooter', $PDFInformation, true);1307        //Set Header Footer and Content For PDF1308        $this->m_pdf->pdf->mPDF('utf-8', 'A4', '', '', '15', '15', '55', '25');1309        $this->m_pdf->pdf->SetHTMLHeader($PDFHeaderHTML, 'O');1310        $this->m_pdf->pdf->SetHTMLFooter($PDFFooterHTML);1311        $data['main_content'] = '/isrpdf';1312        $html = $this->parser->parse('layouts/PdfDataTemplate', $data);1313        /* remove */1314        $this->m_pdf->pdf->WriteHTML($html);1315        //Store PDF in individual_strategies Folder1316        $this->m_pdf->pdf->Output($pdfFileName, "D");1317    }1318    /*1319      @Author : Nikunj Ghelani1320      @Desc   : PDF data1321      @Input  :1322      @Output :1323      @Date   : 28/06/20181324     */1325    public function DownloadPDF_after_mail($id, $signoff_id) {1326        if (is_numeric($id) && is_numeric($signoff_id)) {1327            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];1328            $match = array('yp_id' => $id, 'is_signoff_details_id' => $signoff_id, 'status' => 'inactive');1329            $check_signoff_data = $this->common_model->get_records(NFC_IS_SIGNOFF_DETAILS, array("form_json_data,user_type,email,key_data,created_date"), '', '', $match);1330            if (!empty($check_signoff_data)) {1331                $expairedDate = date('Y-m-d H:i:s', strtotime($check_signoff_data[0]['created_date'] . REPORT_EXPAIRED_DAYS));1332                if (strtotime(datetimeformat()) <= strtotime($expairedDate)) {1333                    $data['form_data'] = json_decode($check_signoff_data[0]['form_json_data'], TRUE);1334                    //get YP information1335                    $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");1336                    $data['YP_details'] = YpDetails($id,$fields);1337                    1338                    if (empty($data['YP_details'])) {1339                        $msg = $this->lang->line('common_no_record_found');1340                        $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");1341                        redirect('YoungPerson/view/' . $id);1342                    }1343                    //get IS yp data1344                    $match = array('yp_id' => $id, 'is_previous_version' => 1);1345                    $data['is_edit_data'] = $this->common_model->get_records(NFC_INDIVIDUAL_STRATEGIES, array("*"), '', '', $match);1346                    //get approval amendments1347                    $table = NFC_APPROVAL_AMENDMENTS . ' as do';1348                    $match = array('do.yp_id' => $id, 'approval_individual_meeting_id' => $signoff_id);1349                    $fields = array("do.amendments,do.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name");1350                    $join_tables = array(LOGIN . ' as l' => 'l.login_id= do.staff_initials');1351                    $data['item_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);1352                    //get approval current protocols in place1353                    $table = NFC_APPROVAL_CURRENT_PROTOCOLS_IN_PLACE . ' as cpip';1354                    $match = array('cpip.yp_id' => $id, 'approval_individual_meeting_id' => $signoff_id);1355                    $fields = array("cpip.current_protocols_in_place,cpip.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name");1356                    $join_tables = array(LOGIN . ' as l' => 'l.login_id= cpip.staff_initials');1357                    $data['protocols_details'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);1358                    1359                    //get signoff data 1360                    $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];1361                    $table = INDIVIDUAL_MEETING_SIGNOFF . ' as ims';1362                    $where = array("l.is_delete" => "0", "ims.yp_id" => $id, "ims.is_delete" => "0");1363                    $fields = array("ims.created_by,ims.created_date,ims.yp_id, CONCAT(`firstname`,' ', `lastname`) as name");1364                    $join_tables = array(LOGIN . ' as l' => 'l.login_id=ims.created_by');1365                    $group_by = array('created_by');1366                    $data['ra_signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', $group_by, $where);1367                    $table = INDIVIDUAL_MEETING_SIGNOFF . ' as ims';1368                    $where = array("ims.yp_id" => $id, "ims.created_by" => $login_user_id, "ims.is_delete" => "0");1369                    $fields = array("ims.individual_meeting_signoff_id,ims.individual_meeting_id");1370                    $data['check_signoff_data'] = $this->common_model->get_records($table, $fields, '', '', '', '', '', '', '', '', '', $where);1371                    //get ra old yp data1372                    $data['key_data'] = $email;1373                    $data['ypid'] = $id;1374                    $data['signoff_id'] = $signoff_id;1375                    $match = array('yp_id' => $id, 'is_previous_version' => 1);1376                    $data['prev_edit_data'] = $this->common_model->get_records(INDIVIDUAL_STRATEGIES, '', '', '', $match);1377                    $data['header'] = array('menu_module' => 'YoungPerson');1378                    $data['footerJs'][0] = base_url('uploads/custom/js/IndividualStrategies/IndividualStrategies.js');1379                    $data['crnt_view'] = $this->viewname;1380                    $pdfFileName = "individualstrategies.pdf";1381                    $PDFInformation['yp_details'] = $data['YP_details'][0];1382                    $PDFInformation['edit_data'] = $data['edit_data'][0]['modified_date'];1383                    $PDFInformation['edit_date'] = $data['is_edit_data'][0]['modified_date'];1384                    $PDFHeaderHTML = $this->load->view('individualstrategiespdfHeader', $PDFInformation, true);1385                    $PDFFooterHTML = $this->load->view('individualstrategiespdfFooter', $PDFInformation, true);1386                    //Set Header Footer and Content For PDF1387                    $this->m_pdf->pdf->mPDF('utf-8', 'A4', '', '', '10', '10', '45', '25');1388                    $this->m_pdf->pdf->SetHTMLHeader($PDFHeaderHTML, 'O');1389                    $this->m_pdf->pdf->SetHTMLFooter($PDFFooterHTML);1390                    $data['main_content'] = '/individualstrategies';1391                    $html = $this->parser->parse('layouts/PdfDataTemplate', $data);1392                    /* remove */1393                    $this->m_pdf->pdf->WriteHTML($html);1394                    //Store PDF in individual_strategies Folder1395                    $this->m_pdf->pdf->Output($pdfFileName, "D");1396                } else {1397                    $msg = lang('link_expired');1398                    $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>")1399                    ;1400                    $this->load->view('successfully_message');1401                }1402            } else {1403                $msg = $this->lang->line('already_is_review');1404                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");1405                $this->load->view('successfully_message');1406            }1407            //get pp form1408        } else {1409            show_404();1410        }1411    }1412}...test.php
Source: test.php 
1<?PHP2require_once '../peg/autoloader.php';3use hafriedlander\Peg\Parser;4class parsingMachine extends Parser\Basic {5/* SL: '/' */6protected $match_SL_typestack = array('SL');7function match_SL ($stack = array()) {8	$matchrule = "SL"; $result = $this->construct($matchrule, $matchrule, null);9	if (substr($this->string,$this->pos,1) == '/') {10		$this->pos += 1;11		$result["text"] .= '/';12		return $this->finalise($result);13	}14	else { return FALSE; }15}16/* DP: ':' */17protected $match_DP_typestack = array('DP');18function match_DP ($stack = array()) {19	$matchrule = "DP"; $result = $this->construct($matchrule, $matchrule, null);20	if (substr($this->string,$this->pos,1) == ':') {21		$this->pos += 1;22		$result["text"] .= ':';23		return $this->finalise($result);24	}25	else { return FALSE; }26}27/* PV: ';' */28protected $match_PV_typestack = array('PV');29function match_PV ($stack = array()) {30	$matchrule = "PV"; $result = $this->construct($matchrule, $matchrule, null);31	if (substr($this->string,$this->pos,1) == ';') {32		$this->pos += 1;33		$result["text"] .= ';';34		return $this->finalise($result);35	}36	else { return FALSE; }37}38/* V: ',' */39protected $match_V_typestack = array('V');40function match_V ($stack = array()) {41	$matchrule = "V"; $result = $this->construct($matchrule, $matchrule, null);42	if (substr($this->string,$this->pos,1) == ',') {43		$this->pos += 1;44		$result["text"] .= ',';45		return $this->finalise($result);46	}47	else { return FALSE; }48}49/* PLUS: '+' */50protected $match_PLUS_typestack = array('PLUS');51function match_PLUS ($stack = array()) {52	$matchrule = "PLUS"; $result = $this->construct($matchrule, $matchrule, null);53	if (substr($this->string,$this->pos,1) == '+') {54		$this->pos += 1;55		$result["text"] .= '+';56		return $this->finalise($result);57	}58	else { return FALSE; }59}60/* number: /[0-9]+/ */61protected $match_number_typestack = array('number');62function match_number ($stack = array()) {63	$matchrule = "number"; $result = $this->construct($matchrule, $matchrule, null);64	if (( $subres = $this->rx( '/[0-9]+/' ) ) !== FALSE) {65		$result["text"] .= $subres;66		return $this->finalise($result);67	}68	else { return FALSE; }69}70/* number2: /[0-9]{2}/ */71protected $match_number2_typestack = array('number2');72function match_number2 ($stack = array()) {73	$matchrule = "number2"; $result = $this->construct($matchrule, $matchrule, null);74	if (( $subres = $this->rx( '/[0-9]{2}/' ) ) !== FALSE) {75		$result["text"] .= $subres;76		return $this->finalise($result);77	}78	else { return FALSE; }79}80/* number4: /[0-9]{4}/ */81protected $match_number4_typestack = array('number4');82function match_number4 ($stack = array()) {83	$matchrule = "number4"; $result = $this->construct($matchrule, $matchrule, null);84	if (( $subres = $this->rx( '/[0-9]{4}/' ) ) !== FALSE) {85		$result["text"] .= $subres;86		return $this->finalise($result);87	}88	else { return FALSE; }89}90/* chars: /[a-zA-Z\.]+/ */91protected $match_chars_typestack = array('chars');92function match_chars ($stack = array()) {93	$matchrule = "chars"; $result = $this->construct($matchrule, $matchrule, null);94	if (( $subres = $this->rx( '/[a-zA-Z\.]+/' ) ) !== FALSE) {95		$result["text"] .= $subres;96		return $this->finalise($result);97	}98	else { return FALSE; }99}100/* numero: /[0-9]/ */101protected $match_numero_typestack = array('numero');102function match_numero ($stack = array()) {103	$matchrule = "numero"; $result = $this->construct($matchrule, $matchrule, null);104	if (( $subres = $this->rx( '/[0-9]/' ) ) !== FALSE) {105		$result["text"] .= $subres;106		return $this->finalise($result);107	}108	else { return FALSE; }109}110/* minuscolo: /[a-z]/ */111protected $match_minuscolo_typestack = array('minuscolo');112function match_minuscolo ($stack = array()) {113	$matchrule = "minuscolo"; $result = $this->construct($matchrule, $matchrule, null);114	if (( $subres = $this->rx( '/[a-z]/' ) ) !== FALSE) {115		$result["text"] .= $subres;116		return $this->finalise($result);117	}118	else { return FALSE; }119}120/* normale: (numero | minuscolo | '.' | '-' | '_')+ */121protected $match_normale_typestack = array('normale');122function match_normale ($stack = array()) {123	$matchrule = "normale"; $result = $this->construct($matchrule, $matchrule, null);124	$count = 0;125	while (true) {126		$res_29 = $result;127		$pos_29 = $this->pos;128		$_28 = NULL;129		do {130			$_26 = NULL;131			do {132				$res_11 = $result;133				$pos_11 = $this->pos;134				$matcher = 'match_'.'numero'; $key = $matcher; $pos = $this->pos;135				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );136				if ($subres !== FALSE) {137					$this->store( $result, $subres );138					$_26 = TRUE; break;139				}140				$result = $res_11;141				$this->pos = $pos_11;142				$_24 = NULL;143				do {144					$res_13 = $result;145					$pos_13 = $this->pos;146					$matcher = 'match_'.'minuscolo'; $key = $matcher; $pos = $this->pos;147					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );148					if ($subres !== FALSE) {149						$this->store( $result, $subres );150						$_24 = TRUE; break;151					}152					$result = $res_13;153					$this->pos = $pos_13;154					$_22 = NULL;155					do {156						$res_15 = $result;157						$pos_15 = $this->pos;158						if (substr($this->string,$this->pos,1) == '.') {159							$this->pos += 1;160							$result["text"] .= '.';161							$_22 = TRUE; break;162						}163						$result = $res_15;164						$this->pos = $pos_15;165						$_20 = NULL;166						do {167							$res_17 = $result;168							$pos_17 = $this->pos;169							if (substr($this->string,$this->pos,1) == '-') {170								$this->pos += 1;171								$result["text"] .= '-';172								$_20 = TRUE; break;173							}174							$result = $res_17;175							$this->pos = $pos_17;176							if (substr($this->string,$this->pos,1) == '_') {177								$this->pos += 1;178								$result["text"] .= '_';179								$_20 = TRUE; break;180							}181							$result = $res_17;182							$this->pos = $pos_17;183							$_20 = FALSE; break;184						}185						while(0);186						if( $_20 === TRUE ) { $_22 = TRUE; break; }187						$result = $res_15;188						$this->pos = $pos_15;189						$_22 = FALSE; break;190					}191					while(0);192					if( $_22 === TRUE ) { $_24 = TRUE; break; }193					$result = $res_13;194					$this->pos = $pos_13;195					$_24 = FALSE; break;196				}197				while(0);198				if( $_24 === TRUE ) { $_26 = TRUE; break; }199				$result = $res_11;200				$this->pos = $pos_11;201				$_26 = FALSE; break;202			}203			while(0);204			if( $_26 === FALSE) { $_28 = FALSE; break; }205			$_28 = TRUE; break;206		}207		while(0);208		if( $_28 === FALSE) {209			$result = $res_29;210			$this->pos = $pos_29;211			unset( $res_29 );212			unset( $pos_29 );213			break;214		}215		$count++;216	}217	if ($count >= 1) { return $this->finalise($result); }218	else { return FALSE; }219}220/* other: /=-_'()/ */221protected $match_other_typestack = array('other');222function match_other ($stack = array()) {223	$matchrule = "other"; $result = $this->construct($matchrule, $matchrule, null);224	if (( $subres = $this->rx( '/=-_\'()/' ) ) !== FALSE) {225		$result["text"] .= $subres;226		return $this->finalise($result);227	}228	else { return FALSE; }229}230/* any: /.+/ */231protected $match_any_typestack = array('any');232function match_any ($stack = array()) {233	$matchrule = "any"; $result = $this->construct($matchrule, $matchrule, null);234	if (( $subres = $this->rx( '/.+/' ) ) !== FALSE) {235		$result["text"] .= $subres;236		return $this->finalise($result);237	}238	else { return FALSE; }239}240/* token: normale* */241protected $match_token_typestack = array('token');242function match_token ($stack = array()) {243	$matchrule = "token"; $result = $this->construct($matchrule, $matchrule, null);244	while (true) {245		$res_32 = $result;246		$pos_32 = $this->pos;247		$matcher = 'match_'.'normale'; $key = $matcher; $pos = $this->pos;248		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );249		if ($subres !== FALSE) { $this->store( $result, $subres ); }250		else {251			$result = $res_32;252			$this->pos = $pos_32;253			unset( $res_32 );254			unset( $pos_32 );255			break;256		}257	}258	return $this->finalise($result);259}260/* string: (number | chars )+ */261protected $match_string_typestack = array('string');262function match_string ($stack = array()) {263	$matchrule = "string"; $result = $this->construct($matchrule, $matchrule, null);264	$count = 0;265	while (true) {266		$res_39 = $result;267		$pos_39 = $this->pos;268		$_38 = NULL;269		do {270			$_36 = NULL;271			do {272				$res_33 = $result;273				$pos_33 = $this->pos;274				$matcher = 'match_'.'number'; $key = $matcher; $pos = $this->pos;275				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );276				if ($subres !== FALSE) {277					$this->store( $result, $subres );278					$_36 = TRUE; break;279				}280				$result = $res_33;281				$this->pos = $pos_33;282				$matcher = 'match_'.'chars'; $key = $matcher; $pos = $this->pos;283				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );284				if ($subres !== FALSE) {285					$this->store( $result, $subres );286					$_36 = TRUE; break;287				}288				$result = $res_33;289				$this->pos = $pos_33;290				$_36 = FALSE; break;291			}292			while(0);293			if( $_36 === FALSE) { $_38 = FALSE; break; }294			$_38 = TRUE; break;295		}296		while(0);297		if( $_38 === FALSE) {298			$result = $res_39;299			$this->pos = $pos_39;300			unset( $res_39 );301			unset( $pos_39 );302			break;303		}304		$count++;305	}306	if ($count >= 1) { return $this->finalise($result); }307	else { return FALSE; }308}309/* dataString: number4 '-' number2 '-' number2 */310protected $match_dataString_typestack = array('dataString');311function match_dataString ($stack = array()) {312	$matchrule = "dataString"; $result = $this->construct($matchrule, $matchrule, null);313	$_45 = NULL;314	do {315		$matcher = 'match_'.'number4'; $key = $matcher; $pos = $this->pos;316		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );317		if ($subres !== FALSE) { $this->store( $result, $subres ); }318		else { $_45 = FALSE; break; }319		if (substr($this->string,$this->pos,1) == '-') {320			$this->pos += 1;321			$result["text"] .= '-';322		}323		else { $_45 = FALSE; break; }324		$matcher = 'match_'.'number2'; $key = $matcher; $pos = $this->pos;325		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );326		if ($subres !== FALSE) { $this->store( $result, $subres ); }327		else { $_45 = FALSE; break; }328		if (substr($this->string,$this->pos,1) == '-') {329			$this->pos += 1;330			$result["text"] .= '-';331		}332		else { $_45 = FALSE; break; }333		$matcher = 'match_'.'number2'; $key = $matcher; $pos = $this->pos;334		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );335		if ($subres !== FALSE) { $this->store( $result, $subres ); }336		else { $_45 = FALSE; break; }337		$_45 = TRUE; break;338	}339	while(0);340	if( $_45 === TRUE ) { return $this->finalise($result); }341	if( $_45 === FALSE) { return FALSE; }342}343/* expr: > :schema :documento :versione? :comunicato* :manifestazione? :partizione? :proprieta? :extra? > | :extra */344protected $match_expr_typestack = array('expr');345function match_expr ($stack = array()) {346	$matchrule = "expr"; $result = $this->construct($matchrule, $matchrule, null);347	$_61 = NULL;348	do {349		$res_47 = $result;350		$pos_47 = $this->pos;351		$_58 = NULL;352		do {353			if (( $subres = $this->whitespace(  ) ) !== FALSE) { $result["text"] .= $subres; }354			$matcher = 'match_'.'schema'; $key = $matcher; $pos = $this->pos;355			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );356			if ($subres !== FALSE) {357				$this->store( $result, $subres, "schema" );358			}359			else { $_58 = FALSE; break; }360			$matcher = 'match_'.'documento'; $key = $matcher; $pos = $this->pos;361			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );362			if ($subres !== FALSE) {363				$this->store( $result, $subres, "documento" );364			}365			else { $_58 = FALSE; break; }366			$res_51 = $result;367			$pos_51 = $this->pos;368			$matcher = 'match_'.'versione'; $key = $matcher; $pos = $this->pos;369			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );370			if ($subres !== FALSE) {371				$this->store( $result, $subres, "versione" );372			}373			else {374				$result = $res_51;375				$this->pos = $pos_51;376				unset( $res_51 );377				unset( $pos_51 );378			}379			while (true) {380				$res_52 = $result;381				$pos_52 = $this->pos;382				$matcher = 'match_'.'comunicato'; $key = $matcher; $pos = $this->pos;383				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );384				if ($subres !== FALSE) {385					$this->store( $result, $subres, "comunicato" );386				}387				else {388					$result = $res_52;389					$this->pos = $pos_52;390					unset( $res_52 );391					unset( $pos_52 );392					break;393				}394			}395			$res_53 = $result;396			$pos_53 = $this->pos;397			$matcher = 'match_'.'manifestazione'; $key = $matcher; $pos = $this->pos;398			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );399			if ($subres !== FALSE) {400				$this->store( $result, $subres, "manifestazione" );401			}402			else {403				$result = $res_53;404				$this->pos = $pos_53;405				unset( $res_53 );406				unset( $pos_53 );407			}408			$res_54 = $result;409			$pos_54 = $this->pos;410			$matcher = 'match_'.'partizione'; $key = $matcher; $pos = $this->pos;411			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );412			if ($subres !== FALSE) {413				$this->store( $result, $subres, "partizione" );414			}415			else {416				$result = $res_54;417				$this->pos = $pos_54;418				unset( $res_54 );419				unset( $pos_54 );420			}421			$res_55 = $result;422			$pos_55 = $this->pos;423			$matcher = 'match_'.'proprieta'; $key = $matcher; $pos = $this->pos;424			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );425			if ($subres !== FALSE) {426				$this->store( $result, $subres, "proprieta" );427			}428			else {429				$result = $res_55;430				$this->pos = $pos_55;431				unset( $res_55 );432				unset( $pos_55 );433			}434			$res_56 = $result;435			$pos_56 = $this->pos;436			$matcher = 'match_'.'extra'; $key = $matcher; $pos = $this->pos;437			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );438			if ($subres !== FALSE) {439				$this->store( $result, $subres, "extra" );440			}441			else {442				$result = $res_56;443				$this->pos = $pos_56;444				unset( $res_56 );445				unset( $pos_56 );446			}447			if (( $subres = $this->whitespace(  ) ) !== FALSE) { $result["text"] .= $subres; }448			$_58 = TRUE; break;449		}450		while(0);451		if( $_58 === TRUE ) { $_61 = TRUE; break; }452		$result = $res_47;453		$this->pos = $pos_47;454		$matcher = 'match_'.'extra'; $key = $matcher; $pos = $this->pos;455		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );456		if ($subres !== FALSE) {457			$this->store( $result, $subres, "extra" );458			$_61 = TRUE; break;459		}460		$result = $res_47;461		$this->pos = $pos_47;462		$_61 = FALSE; break;463	}464	while(0);465	if( $_61 === TRUE ) { return $this->finalise($result); }466	if( $_61 === FALSE) { return FALSE; }467}468/* extra: any */469protected $match_extra_typestack = array('extra');470function match_extra ($stack = array()) {471	$matchrule = "extra"; $result = $this->construct($matchrule, $matchrule, null);472	$matcher = 'match_'.'any'; $key = $matcher; $pos = $this->pos;473	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );474	if ($subres !== FALSE) {475		$this->store( $result, $subres );476		return $this->finalise($result);477	}478	else { return FALSE; }479}480/* schema: "urn:nir:" */481protected $match_schema_typestack = array('schema');482function match_schema ($stack = array()) {483	$matchrule = "schema"; $result = $this->construct($matchrule, $matchrule, null);484	if (( $subres = $this->literal( 'urn:nir:' ) ) !== FALSE) {485		$result["text"] .= $subres;486		return $this->finalise($result);487	}488	else { return FALSE; }489}490/* documento: :autorita DP :provvedimento (DP :estremi (DP :annesso)*)? */491protected $match_documento_typestack = array('documento');492function match_documento ($stack = array()) {493	$matchrule = "documento"; $result = $this->construct($matchrule, $matchrule, null);494	$_76 = NULL;495	do {496		$matcher = 'match_'.'autorita'; $key = $matcher; $pos = $this->pos;497		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );498		if ($subres !== FALSE) {499			$this->store( $result, $subres, "autorita" );500		}501		else { $_76 = FALSE; break; }502		$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;503		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );504		if ($subres !== FALSE) { $this->store( $result, $subres ); }505		else { $_76 = FALSE; break; }506		$matcher = 'match_'.'provvedimento'; $key = $matcher; $pos = $this->pos;507		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );508		if ($subres !== FALSE) {509			$this->store( $result, $subres, "provvedimento" );510		}511		else { $_76 = FALSE; break; }512		$res_75 = $result;513		$pos_75 = $this->pos;514		$_74 = NULL;515		do {516			$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;517			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );518			if ($subres !== FALSE) { $this->store( $result, $subres ); }519			else { $_74 = FALSE; break; }520			$matcher = 'match_'.'estremi'; $key = $matcher; $pos = $this->pos;521			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );522			if ($subres !== FALSE) {523				$this->store( $result, $subres, "estremi" );524			}525			else { $_74 = FALSE; break; }526			while (true) {527				$res_73 = $result;528				$pos_73 = $this->pos;529				$_72 = NULL;530				do {531					$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;532					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );533					if ($subres !== FALSE) { $this->store( $result, $subres ); }534					else { $_72 = FALSE; break; }535					$matcher = 'match_'.'annesso'; $key = $matcher; $pos = $this->pos;536					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );537					if ($subres !== FALSE) {538						$this->store( $result, $subres, "annesso" );539					}540					else { $_72 = FALSE; break; }541					$_72 = TRUE; break;542				}543				while(0);544				if( $_72 === FALSE) {545					$result = $res_73;546					$this->pos = $pos_73;547					unset( $res_73 );548					unset( $pos_73 );549					break;550				}551			}552			$_74 = TRUE; break;553		}554		while(0);555		if( $_74 === FALSE) {556			$result = $res_75;557			$this->pos = $pos_75;558			unset( $res_75 );559			unset( $pos_75 );560		}561		$_76 = TRUE; break;562	}563	while(0);564	if( $_76 === TRUE ) { return $this->finalise($result); }565	if( $_76 === FALSE) { return FALSE; }566}567/* autorita: :soggetto (PLUS :soggetto)* */568protected $match_autorita_typestack = array('autorita');569function match_autorita ($stack = array()) {570	$matchrule = "autorita"; $result = $this->construct($matchrule, $matchrule, null);571	$_83 = NULL;572	do {573		$matcher = 'match_'.'soggetto'; $key = $matcher; $pos = $this->pos;574		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );575		if ($subres !== FALSE) {576			$this->store( $result, $subres, "soggetto" );577		}578		else { $_83 = FALSE; break; }579		while (true) {580			$res_82 = $result;581			$pos_82 = $this->pos;582			$_81 = NULL;583			do {584				$matcher = 'match_'.'PLUS'; $key = $matcher; $pos = $this->pos;585				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );586				if ($subres !== FALSE) { $this->store( $result, $subres ); }587				else { $_81 = FALSE; break; }588				$matcher = 'match_'.'soggetto'; $key = $matcher; $pos = $this->pos;589				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );590				if ($subres !== FALSE) {591					$this->store( $result, $subres, "soggetto" );592				}593				else { $_81 = FALSE; break; }594				$_81 = TRUE; break;595			}596			while(0);597			if( $_81 === FALSE) {598				$result = $res_82;599				$this->pos = $pos_82;600				unset( $res_82 );601				unset( $pos_82 );602				break;603			}604		}605		$_83 = TRUE; break;606	}607	while(0);608	if( $_83 === TRUE ) { return $this->finalise($result); }609	if( $_83 === FALSE) { return FALSE; }610}611/* soggetto: 612	istituzione:token PV organo:token PV organo:token PV organo:token PV organo:token PV funzione:token | 613	istituzione:token PV organo:token PV organo:token PV organo:token PV funzione:token | 614	istituzione:token PV organo:token PV organo:token PV funzione:token | 615	istituzione:token PV organo:token PV funzione:token | 616	istituzione:token PV funzione:token | 617	carica:token */618protected $match_soggetto_typestack = array('soggetto');619function match_soggetto ($stack = array()) {620	$matchrule = "soggetto"; $result = $this->construct($matchrule, $matchrule, null);621	$_144 = NULL;622	do {623		$res_85 = $result;624		$pos_85 = $this->pos;625		$_97 = NULL;626		do {627			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;628			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );629			if ($subres !== FALSE) {630				$this->store( $result, $subres, "istituzione" );631			}632			else { $_97 = FALSE; break; }633			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;634			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );635			if ($subres !== FALSE) { $this->store( $result, $subres ); }636			else { $_97 = FALSE; break; }637			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;638			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );639			if ($subres !== FALSE) {640				$this->store( $result, $subres, "organo" );641			}642			else { $_97 = FALSE; break; }643			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;644			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );645			if ($subres !== FALSE) { $this->store( $result, $subres ); }646			else { $_97 = FALSE; break; }647			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;648			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );649			if ($subres !== FALSE) {650				$this->store( $result, $subres, "organo" );651			}652			else { $_97 = FALSE; break; }653			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;654			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );655			if ($subres !== FALSE) { $this->store( $result, $subres ); }656			else { $_97 = FALSE; break; }657			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;658			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );659			if ($subres !== FALSE) {660				$this->store( $result, $subres, "organo" );661			}662			else { $_97 = FALSE; break; }663			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;664			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );665			if ($subres !== FALSE) { $this->store( $result, $subres ); }666			else { $_97 = FALSE; break; }667			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;668			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );669			if ($subres !== FALSE) {670				$this->store( $result, $subres, "organo" );671			}672			else { $_97 = FALSE; break; }673			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;674			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );675			if ($subres !== FALSE) { $this->store( $result, $subres ); }676			else { $_97 = FALSE; break; }677			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;678			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );679			if ($subres !== FALSE) {680				$this->store( $result, $subres, "funzione" );681			}682			else { $_97 = FALSE; break; }683			$_97 = TRUE; break;684		}685		while(0);686		if( $_97 === TRUE ) { $_144 = TRUE; break; }687		$result = $res_85;688		$this->pos = $pos_85;689		$_142 = NULL;690		do {691			$res_99 = $result;692			$pos_99 = $this->pos;693			$_109 = NULL;694			do {695				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;696				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );697				if ($subres !== FALSE) {698					$this->store( $result, $subres, "istituzione" );699				}700				else { $_109 = FALSE; break; }701				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;702				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );703				if ($subres !== FALSE) { $this->store( $result, $subres ); }704				else { $_109 = FALSE; break; }705				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;706				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );707				if ($subres !== FALSE) {708					$this->store( $result, $subres, "organo" );709				}710				else { $_109 = FALSE; break; }711				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;712				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );713				if ($subres !== FALSE) { $this->store( $result, $subres ); }714				else { $_109 = FALSE; break; }715				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;716				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );717				if ($subres !== FALSE) {718					$this->store( $result, $subres, "organo" );719				}720				else { $_109 = FALSE; break; }721				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;722				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );723				if ($subres !== FALSE) { $this->store( $result, $subres ); }724				else { $_109 = FALSE; break; }725				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;726				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );727				if ($subres !== FALSE) {728					$this->store( $result, $subres, "organo" );729				}730				else { $_109 = FALSE; break; }731				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;732				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );733				if ($subres !== FALSE) { $this->store( $result, $subres ); }734				else { $_109 = FALSE; break; }735				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;736				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );737				if ($subres !== FALSE) {738					$this->store( $result, $subres, "funzione" );739				}740				else { $_109 = FALSE; break; }741				$_109 = TRUE; break;742			}743			while(0);744			if( $_109 === TRUE ) { $_142 = TRUE; break; }745			$result = $res_99;746			$this->pos = $pos_99;747			$_140 = NULL;748			do {749				$res_111 = $result;750				$pos_111 = $this->pos;751				$_119 = NULL;752				do {753					$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;754					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );755					if ($subres !== FALSE) {756						$this->store( $result, $subres, "istituzione" );757					}758					else { $_119 = FALSE; break; }759					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;760					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );761					if ($subres !== FALSE) { $this->store( $result, $subres ); }762					else { $_119 = FALSE; break; }763					$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;764					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );765					if ($subres !== FALSE) {766						$this->store( $result, $subres, "organo" );767					}768					else { $_119 = FALSE; break; }769					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;770					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );771					if ($subres !== FALSE) { $this->store( $result, $subres ); }772					else { $_119 = FALSE; break; }773					$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;774					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );775					if ($subres !== FALSE) {776						$this->store( $result, $subres, "organo" );777					}778					else { $_119 = FALSE; break; }779					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;780					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );781					if ($subres !== FALSE) { $this->store( $result, $subres ); }782					else { $_119 = FALSE; break; }783					$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;784					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );785					if ($subres !== FALSE) {786						$this->store( $result, $subres, "funzione" );787					}788					else { $_119 = FALSE; break; }789					$_119 = TRUE; break;790				}791				while(0);792				if( $_119 === TRUE ) { $_140 = TRUE; break; }793				$result = $res_111;794				$this->pos = $pos_111;795				$_138 = NULL;796				do {797					$res_121 = $result;798					$pos_121 = $this->pos;799					$_127 = NULL;800					do {801						$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;802						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );803						if ($subres !== FALSE) {804							$this->store( $result, $subres, "istituzione" );805						}806						else { $_127 = FALSE; break; }807						$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;808						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );809						if ($subres !== FALSE) {810							$this->store( $result, $subres );811						}812						else { $_127 = FALSE; break; }813						$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;814						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );815						if ($subres !== FALSE) {816							$this->store( $result, $subres, "organo" );817						}818						else { $_127 = FALSE; break; }819						$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;820						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );821						if ($subres !== FALSE) {822							$this->store( $result, $subres );823						}824						else { $_127 = FALSE; break; }825						$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;826						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );827						if ($subres !== FALSE) {828							$this->store( $result, $subres, "funzione" );829						}830						else { $_127 = FALSE; break; }831						$_127 = TRUE; break;832					}833					while(0);834					if( $_127 === TRUE ) { $_138 = TRUE; break; }835					$result = $res_121;836					$this->pos = $pos_121;837					$_136 = NULL;838					do {839						$res_129 = $result;840						$pos_129 = $this->pos;841						$_133 = NULL;842						do {843							$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;844							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );845							if ($subres !== FALSE) {846								$this->store( $result, $subres, "istituzione" );847							}848							else { $_133 = FALSE; break; }849							$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;850							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );851							if ($subres !== FALSE) {852								$this->store( $result, $subres );853							}854							else { $_133 = FALSE; break; }855							$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;856							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );857							if ($subres !== FALSE) {858								$this->store( $result, $subres, "funzione" );859							}860							else { $_133 = FALSE; break; }861							$_133 = TRUE; break;862						}863						while(0);864						if( $_133 === TRUE ) { $_136 = TRUE; break; }865						$result = $res_129;866						$this->pos = $pos_129;867						$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;868						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );869						if ($subres !== FALSE) {870							$this->store( $result, $subres, "carica" );871							$_136 = TRUE; break;872						}873						$result = $res_129;874						$this->pos = $pos_129;875						$_136 = FALSE; break;876					}877					while(0);878					if( $_136 === TRUE ) { $_138 = TRUE; break; }879					$result = $res_121;880					$this->pos = $pos_121;881					$_138 = FALSE; break;882				}883				while(0);884				if( $_138 === TRUE ) { $_140 = TRUE; break; }885				$result = $res_111;886				$this->pos = $pos_111;887				$_140 = FALSE; break;888			}889			while(0);890			if( $_140 === TRUE ) { $_142 = TRUE; break; }891			$result = $res_99;892			$this->pos = $pos_99;893			$_142 = FALSE; break;894		}895		while(0);896		if( $_142 === TRUE ) { $_144 = TRUE; break; }897		$result = $res_85;898		$this->pos = $pos_85;899		$_144 = FALSE; break;900	}901	while(0);902	if( $_144 === TRUE ) { return $this->finalise($result); }903	if( $_144 === FALSE) { return FALSE; }904}905/* suggetto: elemento:token (PV elemento:token)* */906protected $match_suggetto_typestack = array('suggetto');907function match_suggetto ($stack = array()) {908	$matchrule = "suggetto"; $result = $this->construct($matchrule, $matchrule, null);909	$_151 = NULL;910	do {911		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;912		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );913		if ($subres !== FALSE) {914			$this->store( $result, $subres, "elemento" );915		}916		else { $_151 = FALSE; break; }917		while (true) {918			$res_150 = $result;919			$pos_150 = $this->pos;920			$_149 = NULL;921			do {922				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;923				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );924				if ($subres !== FALSE) { $this->store( $result, $subres ); }925				else { $_149 = FALSE; break; }926				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;927				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );928				if ($subres !== FALSE) {929					$this->store( $result, $subres, "elemento" );930				}931				else { $_149 = FALSE; break; }932				$_149 = TRUE; break;933			}934			while(0);935			if( $_149 === FALSE) {936				$result = $res_150;937				$this->pos = $pos_150;938				unset( $res_150 );939				unset( $pos_150 );940				break;941			}942		}943		$_151 = TRUE; break;944	}945	while(0);946	if( $_151 === TRUE ) { return $this->finalise($result); }947	if( $_151 === FALSE) { return FALSE; }948}949/* provvedimento: tipo:token ( PV :spec)* */950protected $match_provvedimento_typestack = array('provvedimento');951function match_provvedimento ($stack = array()) {952	$matchrule = "provvedimento"; $result = $this->construct($matchrule, $matchrule, null);953	$_158 = NULL;954	do {955		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;956		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );957		if ($subres !== FALSE) {958			$this->store( $result, $subres, "tipo" );959		}960		else { $_158 = FALSE; break; }961		while (true) {962			$res_157 = $result;963			$pos_157 = $this->pos;964			$_156 = NULL;965			do {966				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;967				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );968				if ($subres !== FALSE) { $this->store( $result, $subres ); }969				else { $_156 = FALSE; break; }970				$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;971				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );972				if ($subres !== FALSE) {973					$this->store( $result, $subres, "spec" );974				}975				else { $_156 = FALSE; break; }976				$_156 = TRUE; break;977			}978			while(0);979			if( $_156 === FALSE) {980				$result = $res_157;981				$this->pos = $pos_157;982				unset( $res_157 );983				unset( $pos_157 );984				break;985			}986		}987		$_158 = TRUE; break;988	}989	while(0);990	if( $_158 === TRUE ) { return $this->finalise($result); }991	if( $_158 === FALSE) { return FALSE; }992}993/* estremi: 994	(:date (PV :numeri (V :numeri)*) ?) |995	(:periodo PV :date (PV :numeri (V :numeri)*) ?) |996	(:periodo (PV :numeri (V :numeri)*) ?) */997protected $match_estremi_typestack = array('estremi');998function match_estremi ($stack = array()) {999	$matchrule = "estremi"; $result = $this->construct($matchrule, $matchrule, null);1000	$_199 = NULL;1001	do {1002		$res_160 = $result;1003		$pos_160 = $this->pos;1004		$_170 = NULL;1005		do {1006			$matcher = 'match_'.'date'; $key = $matcher; $pos = $this->pos;1007			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1008			if ($subres !== FALSE) {1009				$this->store( $result, $subres, "date" );1010			}1011			else { $_170 = FALSE; break; }1012			$res_169 = $result;1013			$pos_169 = $this->pos;1014			$_168 = NULL;1015			do {1016				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1017				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1018				if ($subres !== FALSE) { $this->store( $result, $subres ); }1019				else { $_168 = FALSE; break; }1020				$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1021				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1022				if ($subres !== FALSE) {1023					$this->store( $result, $subres, "numeri" );1024				}1025				else { $_168 = FALSE; break; }1026				while (true) {1027					$res_167 = $result;1028					$pos_167 = $this->pos;1029					$_166 = NULL;1030					do {1031						$matcher = 'match_'.'V'; $key = $matcher; $pos = $this->pos;1032						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1033						if ($subres !== FALSE) {1034							$this->store( $result, $subres );1035						}1036						else { $_166 = FALSE; break; }1037						$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1038						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1039						if ($subres !== FALSE) {1040							$this->store( $result, $subres, "numeri" );1041						}1042						else { $_166 = FALSE; break; }1043						$_166 = TRUE; break;1044					}1045					while(0);1046					if( $_166 === FALSE) {1047						$result = $res_167;1048						$this->pos = $pos_167;1049						unset( $res_167 );1050						unset( $pos_167 );1051						break;1052					}1053				}1054				$_168 = TRUE; break;1055			}1056			while(0);1057			if( $_168 === FALSE) {1058				$result = $res_169;1059				$this->pos = $pos_169;1060				unset( $res_169 );1061				unset( $pos_169 );1062			}1063			$_170 = TRUE; break;1064		}1065		while(0);1066		if( $_170 === TRUE ) { $_199 = TRUE; break; }1067		$result = $res_160;1068		$this->pos = $pos_160;1069		$_197 = NULL;1070		do {1071			$res_172 = $result;1072			$pos_172 = $this->pos;1073			$_184 = NULL;1074			do {1075				$matcher = 'match_'.'periodo'; $key = $matcher; $pos = $this->pos;1076				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1077				if ($subres !== FALSE) {1078					$this->store( $result, $subres, "periodo" );1079				}1080				else { $_184 = FALSE; break; }1081				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1082				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1083				if ($subres !== FALSE) { $this->store( $result, $subres ); }1084				else { $_184 = FALSE; break; }1085				$matcher = 'match_'.'date'; $key = $matcher; $pos = $this->pos;1086				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1087				if ($subres !== FALSE) {1088					$this->store( $result, $subres, "date" );1089				}1090				else { $_184 = FALSE; break; }1091				$res_183 = $result;1092				$pos_183 = $this->pos;1093				$_182 = NULL;1094				do {1095					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1096					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1097					if ($subres !== FALSE) { $this->store( $result, $subres ); }1098					else { $_182 = FALSE; break; }1099					$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1100					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1101					if ($subres !== FALSE) {1102						$this->store( $result, $subres, "numeri" );1103					}1104					else { $_182 = FALSE; break; }1105					while (true) {1106						$res_181 = $result;1107						$pos_181 = $this->pos;1108						$_180 = NULL;1109						do {1110							$matcher = 'match_'.'V'; $key = $matcher; $pos = $this->pos;1111							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1112							if ($subres !== FALSE) {1113								$this->store( $result, $subres );1114							}1115							else { $_180 = FALSE; break; }1116							$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1117							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1118							if ($subres !== FALSE) {1119								$this->store( $result, $subres, "numeri" );1120							}1121							else { $_180 = FALSE; break; }1122							$_180 = TRUE; break;1123						}1124						while(0);1125						if( $_180 === FALSE) {1126							$result = $res_181;1127							$this->pos = $pos_181;1128							unset( $res_181 );1129							unset( $pos_181 );1130							break;1131						}1132					}1133					$_182 = TRUE; break;1134				}1135				while(0);1136				if( $_182 === FALSE) {1137					$result = $res_183;1138					$this->pos = $pos_183;1139					unset( $res_183 );1140					unset( $pos_183 );1141				}1142				$_184 = TRUE; break;1143			}1144			while(0);1145			if( $_184 === TRUE ) { $_197 = TRUE; break; }1146			$result = $res_172;1147			$this->pos = $pos_172;1148			$_195 = NULL;1149			do {1150				$matcher = 'match_'.'periodo'; $key = $matcher; $pos = $this->pos;1151				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1152				if ($subres !== FALSE) {1153					$this->store( $result, $subres, "periodo" );1154				}1155				else { $_195 = FALSE; break; }1156				$res_194 = $result;1157				$pos_194 = $this->pos;1158				$_193 = NULL;1159				do {1160					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1161					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1162					if ($subres !== FALSE) { $this->store( $result, $subres ); }1163					else { $_193 = FALSE; break; }1164					$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1165					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1166					if ($subres !== FALSE) {1167						$this->store( $result, $subres, "numeri" );1168					}1169					else { $_193 = FALSE; break; }1170					while (true) {1171						$res_192 = $result;1172						$pos_192 = $this->pos;1173						$_191 = NULL;1174						do {1175							$matcher = 'match_'.'V'; $key = $matcher; $pos = $this->pos;1176							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1177							if ($subres !== FALSE) {1178								$this->store( $result, $subres );1179							}1180							else { $_191 = FALSE; break; }1181							$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1182							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1183							if ($subres !== FALSE) {1184								$this->store( $result, $subres, "numeri" );1185							}1186							else { $_191 = FALSE; break; }1187							$_191 = TRUE; break;1188						}1189						while(0);1190						if( $_191 === FALSE) {1191							$result = $res_192;1192							$this->pos = $pos_192;1193							unset( $res_192 );1194							unset( $pos_192 );1195							break;1196						}1197					}1198					$_193 = TRUE; break;1199				}1200				while(0);1201				if( $_193 === FALSE) {1202					$result = $res_194;1203					$this->pos = $pos_194;1204					unset( $res_194 );1205					unset( $pos_194 );1206				}1207				$_195 = TRUE; break;1208			}1209			while(0);1210			if( $_195 === TRUE ) { $_197 = TRUE; break; }1211			$result = $res_172;1212			$this->pos = $pos_172;1213			$_197 = FALSE; break;1214		}1215		while(0);1216		if( $_197 === TRUE ) { $_199 = TRUE; break; }1217		$result = $res_160;1218		$this->pos = $pos_160;1219		$_199 = FALSE; break;1220	}1221	while(0);1222	if( $_199 === TRUE ) { return $this->finalise($result); }1223	if( $_199 === FALSE) { return FALSE; }1224}1225/* date: data:dataString (V data:dataString)* */1226protected $match_date_typestack = array('date');1227function match_date ($stack = array()) {1228	$matchrule = "date"; $result = $this->construct($matchrule, $matchrule, null);1229	$_206 = NULL;1230	do {1231		$matcher = 'match_'.'dataString'; $key = $matcher; $pos = $this->pos;1232		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1233		if ($subres !== FALSE) {1234			$this->store( $result, $subres, "data" );1235		}1236		else { $_206 = FALSE; break; }1237		while (true) {1238			$res_205 = $result;1239			$pos_205 = $this->pos;1240			$_204 = NULL;1241			do {1242				$matcher = 'match_'.'V'; $key = $matcher; $pos = $this->pos;1243				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1244				if ($subres !== FALSE) { $this->store( $result, $subres ); }1245				else { $_204 = FALSE; break; }1246				$matcher = 'match_'.'dataString'; $key = $matcher; $pos = $this->pos;1247				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1248				if ($subres !== FALSE) {1249					$this->store( $result, $subres, "data" );1250				}1251				else { $_204 = FALSE; break; }1252				$_204 = TRUE; break;1253			}1254			while(0);1255			if( $_204 === FALSE) {1256				$result = $res_205;1257				$this->pos = $pos_205;1258				unset( $res_205 );1259				unset( $pos_205 );1260				break;1261			}1262		}1263		$_206 = TRUE; break;1264	}1265	while(0);1266	if( $_206 === TRUE ) { return $this->finalise($result); }1267	if( $_206 === FALSE) { return FALSE; }1268}1269/* data: data:dataString */1270protected $match_data_typestack = array('data');1271function match_data ($stack = array()) {1272	$matchrule = "data"; $result = $this->construct($matchrule, $matchrule, null);1273	$matcher = 'match_'.'dataString'; $key = $matcher; $pos = $this->pos;1274	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1275	if ($subres !== FALSE) {1276		$this->store( $result, $subres, "data" );1277		return $this->finalise($result);1278	}1279	else { return FALSE; }1280}1281/* periodo: token */1282protected $match_periodo_typestack = array('periodo');1283function match_periodo ($stack = array()) {1284	$matchrule = "periodo"; $result = $this->construct($matchrule, $matchrule, null);1285	$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1286	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1287	if ($subres !== FALSE) {1288		$this->store( $result, $subres );1289		return $this->finalise($result);1290	}1291	else { return FALSE; }1292}1293/* numeri: 'nir-' numero+ | token */1294protected $match_numeri_typestack = array('numeri');1295function match_numeri ($stack = array()) {1296	$matchrule = "numeri"; $result = $this->construct($matchrule, $matchrule, null);1297	$_216 = NULL;1298	do {1299		$res_210 = $result;1300		$pos_210 = $this->pos;1301		$_213 = NULL;1302		do {1303			if (( $subres = $this->literal( 'nir-' ) ) !== FALSE) { $result["text"] .= $subres; }1304			else { $_213 = FALSE; break; }1305			$count = 0;1306			while (true) {1307				$res_212 = $result;1308				$pos_212 = $this->pos;1309				$matcher = 'match_'.'numero'; $key = $matcher; $pos = $this->pos;1310				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1311				if ($subres !== FALSE) { $this->store( $result, $subres ); }1312				else {1313					$result = $res_212;1314					$this->pos = $pos_212;1315					unset( $res_212 );1316					unset( $pos_212 );1317					break;1318				}1319				$count++;1320			}1321			if ($count >= 1) {  }1322			else { $_213 = FALSE; break; }1323			$_213 = TRUE; break;1324		}1325		while(0);1326		if( $_213 === TRUE ) { $_216 = TRUE; break; }1327		$result = $res_210;1328		$this->pos = $pos_210;1329		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1330		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1331		if ($subres !== FALSE) {1332			$this->store( $result, $subres );1333			$_216 = TRUE; break;1334		}1335		$result = $res_210;1336		$this->pos = $pos_210;1337		$_216 = FALSE; break;1338	}1339	while(0);1340	if( $_216 === TRUE ) { return $this->finalise($result); }1341	if( $_216 === FALSE) { return FALSE; }1342}1343/* annesso: id:token (PV :spec)* */1344protected $match_annesso_typestack = array('annesso');1345function match_annesso ($stack = array()) {1346	$matchrule = "annesso"; $result = $this->construct($matchrule, $matchrule, null);1347	$_223 = NULL;1348	do {1349		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1350		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1351		if ($subres !== FALSE) {1352			$this->store( $result, $subres, "id" );1353		}1354		else { $_223 = FALSE; break; }1355		while (true) {1356			$res_222 = $result;1357			$pos_222 = $this->pos;1358			$_221 = NULL;1359			do {1360				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1361				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1362				if ($subres !== FALSE) { $this->store( $result, $subres ); }1363				else { $_221 = FALSE; break; }1364				$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1365				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1366				if ($subres !== FALSE) {1367					$this->store( $result, $subres, "spec" );1368				}1369				else { $_221 = FALSE; break; }1370				$_221 = TRUE; break;1371			}1372			while(0);1373			if( $_221 === FALSE) {1374				$result = $res_222;1375				$this->pos = $pos_222;1376				unset( $res_222 );1377				unset( $pos_222 );1378				break;1379			}1380		}1381		$_223 = TRUE; break;1382	}1383	while(0);1384	if( $_223 === TRUE ) { return $this->finalise($result); }1385	if( $_223 === FALSE) { return FALSE; }1386}1387/* spec: token */1388protected $match_spec_typestack = array('spec');1389function match_spec ($stack = array()) {1390	$matchrule = "spec"; $result = $this->construct($matchrule, $matchrule, null);1391	$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1392	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1393	if ($subres !== FALSE) {1394		$this->store( $result, $subres );1395		return $this->finalise($result);1396	}1397	else { return FALSE; }1398}1399/* vigenza: data */1400protected $match_vigenza_typestack = array('vigenza');1401function match_vigenza ($stack = array()) {1402	$matchrule = "vigenza"; $result = $this->construct($matchrule, $matchrule, null);1403	$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1404	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1405	if ($subres !== FALSE) {1406		$this->store( $result, $subres );1407		return $this->finalise($result);1408	}1409	else { return FALSE; }1410}1411/* versione: '@' (:data | :spec) ( PV (:vigenza | :spec))? */1412protected $match_versione_typestack = array('versione');1413function match_versione ($stack = array()) {1414	$matchrule = "versione"; $result = $this->construct($matchrule, $matchrule, null);1415	$_245 = NULL;1416	do {1417		if (substr($this->string,$this->pos,1) == '@') {1418			$this->pos += 1;1419			$result["text"] .= '@';1420		}1421		else { $_245 = FALSE; break; }1422		$_233 = NULL;1423		do {1424			$_231 = NULL;1425			do {1426				$res_228 = $result;1427				$pos_228 = $this->pos;1428				$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1429				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1430				if ($subres !== FALSE) {1431					$this->store( $result, $subres, "data" );1432					$_231 = TRUE; break;1433				}1434				$result = $res_228;1435				$this->pos = $pos_228;1436				$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1437				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1438				if ($subres !== FALSE) {1439					$this->store( $result, $subres, "spec" );1440					$_231 = TRUE; break;1441				}1442				$result = $res_228;1443				$this->pos = $pos_228;1444				$_231 = FALSE; break;1445			}1446			while(0);1447			if( $_231 === FALSE) { $_233 = FALSE; break; }1448			$_233 = TRUE; break;1449		}1450		while(0);1451		if( $_233 === FALSE) { $_245 = FALSE; break; }1452		$res_244 = $result;1453		$pos_244 = $this->pos;1454		$_243 = NULL;1455		do {1456			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1457			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1458			if ($subres !== FALSE) { $this->store( $result, $subres ); }1459			else { $_243 = FALSE; break; }1460			$_241 = NULL;1461			do {1462				$_239 = NULL;1463				do {1464					$res_236 = $result;1465					$pos_236 = $this->pos;1466					$matcher = 'match_'.'vigenza'; $key = $matcher; $pos = $this->pos;1467					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1468					if ($subres !== FALSE) {1469						$this->store( $result, $subres, "vigenza" );1470						$_239 = TRUE; break;1471					}1472					$result = $res_236;1473					$this->pos = $pos_236;1474					$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1475					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1476					if ($subres !== FALSE) {1477						$this->store( $result, $subres, "spec" );1478						$_239 = TRUE; break;1479					}1480					$result = $res_236;1481					$this->pos = $pos_236;1482					$_239 = FALSE; break;1483				}1484				while(0);1485				if( $_239 === FALSE) { $_241 = FALSE; break; }1486				$_241 = TRUE; break;1487			}1488			while(0);1489			if( $_241 === FALSE) { $_243 = FALSE; break; }1490			$_243 = TRUE; break;1491		}1492		while(0);1493		if( $_243 === FALSE) {1494			$result = $res_244;1495			$this->pos = $pos_244;1496			unset( $res_244 );1497			unset( $pos_244 );1498		}1499		$_245 = TRUE; break;1500	}1501	while(0);1502	if( $_245 === TRUE ) { return $this->finalise($result); }1503	if( $_245 === FALSE) { return FALSE; }1504}1505/* comunicato: '*' tipo:token PV :data */1506protected $match_comunicato_typestack = array('comunicato');1507function match_comunicato ($stack = array()) {1508	$matchrule = "comunicato"; $result = $this->construct($matchrule, $matchrule, null);1509	$_251 = NULL;1510	do {1511		if (substr($this->string,$this->pos,1) == '*') {1512			$this->pos += 1;1513			$result["text"] .= '*';1514		}1515		else { $_251 = FALSE; break; }1516		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1517		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1518		if ($subres !== FALSE) {1519			$this->store( $result, $subres, "tipo" );1520		}1521		else { $_251 = FALSE; break; }1522		$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1523		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1524		if ($subres !== FALSE) { $this->store( $result, $subres ); }1525		else { $_251 = FALSE; break; }1526		$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1527		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1528		if ($subres !== FALSE) {1529			$this->store( $result, $subres, "data" );1530		}1531		else { $_251 = FALSE; break; }1532		$_251 = TRUE; break;1533	}1534	while(0);1535	if( $_251 === TRUE ) { return $this->finalise($result); }1536	if( $_251 === FALSE) { return FALSE; }1537}1538/* manifestazione: '$' formato:(formato:token (PV :spec)*) editore:(DP nome:token (PV :spec)*) (componente:(DP nome:token (PV :spec)*))? */1539protected $match_manifestazione_typestack = array('manifestazione');1540function match_manifestazione ($stack = array()) {1541	$matchrule = "manifestazione"; $result = $this->construct($matchrule, $matchrule, null);1542	$_279 = NULL;1543	do {1544		if (substr($this->string,$this->pos,1) == '$') {1545			$this->pos += 1;1546			$result["text"] .= '$';1547		}1548		else { $_279 = FALSE; break; }1549		$stack[] = $result; $result = $this->construct( $matchrule, "formato" ); 1550		$_259 = NULL;1551		do {1552			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1553			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1554			if ($subres !== FALSE) {1555				$this->store( $result, $subres, "formato" );1556			}1557			else { $_259 = FALSE; break; }1558			while (true) {1559				$res_258 = $result;1560				$pos_258 = $this->pos;1561				$_257 = NULL;1562				do {1563					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1564					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1565					if ($subres !== FALSE) { $this->store( $result, $subres ); }1566					else { $_257 = FALSE; break; }1567					$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1568					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1569					if ($subres !== FALSE) {1570						$this->store( $result, $subres, "spec" );1571					}1572					else { $_257 = FALSE; break; }1573					$_257 = TRUE; break;1574				}1575				while(0);1576				if( $_257 === FALSE) {1577					$result = $res_258;1578					$this->pos = $pos_258;1579					unset( $res_258 );1580					unset( $pos_258 );1581					break;1582				}1583			}1584			$_259 = TRUE; break;1585		}1586		while(0);1587		if( $_259 === TRUE ) {1588			$subres = $result; $result = array_pop($stack);1589			$this->store( $result, $subres, 'formato' );1590		}1591		if( $_259 === FALSE) {1592			$result = array_pop($stack);1593			$_279 = FALSE; break;1594		}1595		$stack[] = $result; $result = $this->construct( $matchrule, "editore" ); 1596		$_267 = NULL;1597		do {1598			$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;1599			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1600			if ($subres !== FALSE) { $this->store( $result, $subres ); }1601			else { $_267 = FALSE; break; }1602			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1603			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1604			if ($subres !== FALSE) {1605				$this->store( $result, $subres, "nome" );1606			}1607			else { $_267 = FALSE; break; }1608			while (true) {1609				$res_266 = $result;1610				$pos_266 = $this->pos;1611				$_265 = NULL;1612				do {1613					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1614					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1615					if ($subres !== FALSE) { $this->store( $result, $subres ); }1616					else { $_265 = FALSE; break; }1617					$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1618					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1619					if ($subres !== FALSE) {1620						$this->store( $result, $subres, "spec" );1621					}1622					else { $_265 = FALSE; break; }1623					$_265 = TRUE; break;1624				}1625				while(0);1626				if( $_265 === FALSE) {1627					$result = $res_266;1628					$this->pos = $pos_266;1629					unset( $res_266 );1630					unset( $pos_266 );1631					break;1632				}1633			}1634			$_267 = TRUE; break;1635		}1636		while(0);1637		if( $_267 === TRUE ) {1638			$subres = $result; $result = array_pop($stack);1639			$this->store( $result, $subres, 'editore' );1640		}1641		if( $_267 === FALSE) {1642			$result = array_pop($stack);1643			$_279 = FALSE; break;1644		}1645		$res_278 = $result;1646		$pos_278 = $this->pos;1647		$_277 = NULL;1648		do {1649			$stack[] = $result; $result = $this->construct( $matchrule, "componente" ); 1650			$_275 = NULL;1651			do {1652				$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;1653				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1654				if ($subres !== FALSE) { $this->store( $result, $subres ); }1655				else { $_275 = FALSE; break; }1656				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1657				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1658				if ($subres !== FALSE) {1659					$this->store( $result, $subres, "nome" );1660				}1661				else { $_275 = FALSE; break; }1662				while (true) {1663					$res_274 = $result;1664					$pos_274 = $this->pos;1665					$_273 = NULL;1666					do {1667						$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1668						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1669						if ($subres !== FALSE) {1670							$this->store( $result, $subres );1671						}1672						else { $_273 = FALSE; break; }1673						$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1674						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1675						if ($subres !== FALSE) {1676							$this->store( $result, $subres, "spec" );1677						}1678						else { $_273 = FALSE; break; }1679						$_273 = TRUE; break;1680					}1681					while(0);1682					if( $_273 === FALSE) {1683						$result = $res_274;1684						$this->pos = $pos_274;1685						unset( $res_274 );1686						unset( $pos_274 );1687						break;1688					}1689				}1690				$_275 = TRUE; break;1691			}1692			while(0);1693			if( $_275 === TRUE ) {1694				$subres = $result; $result = array_pop($stack);1695				$this->store( $result, $subres, 'componente' );1696			}1697			if( $_275 === FALSE) {1698				$result = array_pop($stack);1699				$_277 = FALSE; break;1700			}1701			$_277 = TRUE; break;1702		}1703		while(0);1704		if( $_277 === FALSE) {1705			$result = $res_278;1706			$this->pos = $pos_278;1707			unset( $res_278 );1708			unset( $pos_278 );1709		}1710		$_279 = TRUE; break;1711	}1712	while(0);1713	if( $_279 === TRUE ) { return $this->finalise($result); }1714	if( $_279 === FALSE) { return FALSE; }1715}1716/* partizione: '~' id:token */1717protected $match_partizione_typestack = array('partizione');1718function match_partizione ($stack = array()) {1719	$matchrule = "partizione"; $result = $this->construct($matchrule, $matchrule, null);1720	$_283 = NULL;1721	do {1722		if (substr($this->string,$this->pos,1) == '~') {1723			$this->pos += 1;1724			$result["text"] .= '~';1725		}1726		else { $_283 = FALSE; break; }1727		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1728		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1729		if ($subres !== FALSE) {1730			$this->store( $result, $subres, "id" );1731		}1732		else { $_283 = FALSE; break; }1733		$_283 = TRUE; break;1734	}1735	while(0);1736	if( $_283 === TRUE ) { return $this->finalise($result); }1737	if( $_283 === FALSE) { return FALSE; }1738}1739/* proprieta: '!' ( 'vig=' vigore:data | 'eff=' efficacia:data) */1740protected $match_proprieta_typestack = array('proprieta');1741function match_proprieta ($stack = array()) {1742	$matchrule = "proprieta"; $result = $this->construct($matchrule, $matchrule, null);1743	$_299 = NULL;1744	do {1745		if (substr($this->string,$this->pos,1) == '!') {1746			$this->pos += 1;1747			$result["text"] .= '!';1748		}1749		else { $_299 = FALSE; break; }1750		$_297 = NULL;1751		do {1752			$_295 = NULL;1753			do {1754				$res_286 = $result;1755				$pos_286 = $this->pos;1756				$_289 = NULL;1757				do {1758					if (( $subres = $this->literal( 'vig=' ) ) !== FALSE) { $result["text"] .= $subres; }1759					else { $_289 = FALSE; break; }1760					$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1761					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1762					if ($subres !== FALSE) {1763						$this->store( $result, $subres, "vigore" );1764					}1765					else { $_289 = FALSE; break; }1766					$_289 = TRUE; break;1767				}1768				while(0);1769				if( $_289 === TRUE ) { $_295 = TRUE; break; }1770				$result = $res_286;1771				$this->pos = $pos_286;1772				$_293 = NULL;1773				do {1774					if (( $subres = $this->literal( 'eff=' ) ) !== FALSE) { $result["text"] .= $subres; }1775					else { $_293 = FALSE; break; }1776					$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1777					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1778					if ($subres !== FALSE) {1779						$this->store( $result, $subres, "efficacia" );1780					}1781					else { $_293 = FALSE; break; }1782					$_293 = TRUE; break;1783				}1784				while(0);1785				if( $_293 === TRUE ) { $_295 = TRUE; break; }1786				$result = $res_286;1787				$this->pos = $pos_286;1788				$_295 = FALSE; break;1789			}1790			while(0);1791			if( $_295 === FALSE) { $_297 = FALSE; break; }1792			$_297 = TRUE; break;1793		}1794		while(0);1795		if( $_297 === FALSE) { $_299 = FALSE; break; }1796		$_299 = TRUE; break;1797	}1798	while(0);1799	if( $_299 === TRUE ) { return $this->finalise($result); }1800	if( $_299 === FALSE) { return FALSE; }1801}1802}1803?>...nir.php
Source: nir.php 
1<?PHP2require_once './peg/autoloader.php';3use hafriedlander\Peg\Parser;4class parsingMachine extends Parser\Basic {5/* SL: '/' */6protected $match_SL_typestack = array('SL');7function match_SL ($stack = array()) {8	$matchrule = "SL"; $result = $this->construct($matchrule, $matchrule, null);9	if (substr($this->string,$this->pos,1) == '/') {10		$this->pos += 1;11		$result["text"] .= '/';12		return $this->finalise($result);13	}14	else { return FALSE; }15}16/* DP: ':' */17protected $match_DP_typestack = array('DP');18function match_DP ($stack = array()) {19	$matchrule = "DP"; $result = $this->construct($matchrule, $matchrule, null);20	if (substr($this->string,$this->pos,1) == ':') {21		$this->pos += 1;22		$result["text"] .= ':';23		return $this->finalise($result);24	}25	else { return FALSE; }26}27/* PV: ';' */28protected $match_PV_typestack = array('PV');29function match_PV ($stack = array()) {30	$matchrule = "PV"; $result = $this->construct($matchrule, $matchrule, null);31	if (substr($this->string,$this->pos,1) == ';') {32		$this->pos += 1;33		$result["text"] .= ';';34		return $this->finalise($result);35	}36	else { return FALSE; }37}38/* V: ',' */39protected $match_V_typestack = array('V');40function match_V ($stack = array()) {41	$matchrule = "V"; $result = $this->construct($matchrule, $matchrule, null);42	if (substr($this->string,$this->pos,1) == ',') {43		$this->pos += 1;44		$result["text"] .= ',';45		return $this->finalise($result);46	}47	else { return FALSE; }48}49/* PLUS: '+' */50protected $match_PLUS_typestack = array('PLUS');51function match_PLUS ($stack = array()) {52	$matchrule = "PLUS"; $result = $this->construct($matchrule, $matchrule, null);53	if (substr($this->string,$this->pos,1) == '+') {54		$this->pos += 1;55		$result["text"] .= '+';56		return $this->finalise($result);57	}58	else { return FALSE; }59}60/* number: /[0-9]+/ */61protected $match_number_typestack = array('number');62function match_number ($stack = array()) {63	$matchrule = "number"; $result = $this->construct($matchrule, $matchrule, null);64	if (( $subres = $this->rx( '/[0-9]+/' ) ) !== FALSE) {65		$result["text"] .= $subres;66		return $this->finalise($result);67	}68	else { return FALSE; }69}70/* number2: /[0-9]{2}/ */71protected $match_number2_typestack = array('number2');72function match_number2 ($stack = array()) {73	$matchrule = "number2"; $result = $this->construct($matchrule, $matchrule, null);74	if (( $subres = $this->rx( '/[0-9]{2}/' ) ) !== FALSE) {75		$result["text"] .= $subres;76		return $this->finalise($result);77	}78	else { return FALSE; }79}80/* number4: /[0-9]{4}/ */81protected $match_number4_typestack = array('number4');82function match_number4 ($stack = array()) {83	$matchrule = "number4"; $result = $this->construct($matchrule, $matchrule, null);84	if (( $subres = $this->rx( '/[0-9]{4}/' ) ) !== FALSE) {85		$result["text"] .= $subres;86		return $this->finalise($result);87	}88	else { return FALSE; }89}90/* chars: /[a-zA-Z\.]+/ */91protected $match_chars_typestack = array('chars');92function match_chars ($stack = array()) {93	$matchrule = "chars"; $result = $this->construct($matchrule, $matchrule, null);94	if (( $subres = $this->rx( '/[a-zA-Z\.]+/' ) ) !== FALSE) {95		$result["text"] .= $subres;96		return $this->finalise($result);97	}98	else { return FALSE; }99}100/* numero: /[0-9]/ */101protected $match_numero_typestack = array('numero');102function match_numero ($stack = array()) {103	$matchrule = "numero"; $result = $this->construct($matchrule, $matchrule, null);104	if (( $subres = $this->rx( '/[0-9]/' ) ) !== FALSE) {105		$result["text"] .= $subres;106		return $this->finalise($result);107	}108	else { return FALSE; }109}110/* minuscolo: /[a-z]/ */111protected $match_minuscolo_typestack = array('minuscolo');112function match_minuscolo ($stack = array()) {113	$matchrule = "minuscolo"; $result = $this->construct($matchrule, $matchrule, null);114	if (( $subres = $this->rx( '/[a-z]/' ) ) !== FALSE) {115		$result["text"] .= $subres;116		return $this->finalise($result);117	}118	else { return FALSE; }119}120/* normale: (numero | minuscolo | '.' | '-' | '_')+ */121protected $match_normale_typestack = array('normale');122function match_normale ($stack = array()) {123	$matchrule = "normale"; $result = $this->construct($matchrule, $matchrule, null);124	$count = 0;125	while (true) {126		$res_29 = $result;127		$pos_29 = $this->pos;128		$_28 = NULL;129		do {130			$_26 = NULL;131			do {132				$res_11 = $result;133				$pos_11 = $this->pos;134				$matcher = 'match_'.'numero'; $key = $matcher; $pos = $this->pos;135				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );136				if ($subres !== FALSE) {137					$this->store( $result, $subres );138					$_26 = TRUE; break;139				}140				$result = $res_11;141				$this->pos = $pos_11;142				$_24 = NULL;143				do {144					$res_13 = $result;145					$pos_13 = $this->pos;146					$matcher = 'match_'.'minuscolo'; $key = $matcher; $pos = $this->pos;147					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );148					if ($subres !== FALSE) {149						$this->store( $result, $subres );150						$_24 = TRUE; break;151					}152					$result = $res_13;153					$this->pos = $pos_13;154					$_22 = NULL;155					do {156						$res_15 = $result;157						$pos_15 = $this->pos;158						if (substr($this->string,$this->pos,1) == '.') {159							$this->pos += 1;160							$result["text"] .= '.';161							$_22 = TRUE; break;162						}163						$result = $res_15;164						$this->pos = $pos_15;165						$_20 = NULL;166						do {167							$res_17 = $result;168							$pos_17 = $this->pos;169							if (substr($this->string,$this->pos,1) == '-') {170								$this->pos += 1;171								$result["text"] .= '-';172								$_20 = TRUE; break;173							}174							$result = $res_17;175							$this->pos = $pos_17;176							if (substr($this->string,$this->pos,1) == '_') {177								$this->pos += 1;178								$result["text"] .= '_';179								$_20 = TRUE; break;180							}181							$result = $res_17;182							$this->pos = $pos_17;183							$_20 = FALSE; break;184						}185						while(0);186						if( $_20 === TRUE ) { $_22 = TRUE; break; }187						$result = $res_15;188						$this->pos = $pos_15;189						$_22 = FALSE; break;190					}191					while(0);192					if( $_22 === TRUE ) { $_24 = TRUE; break; }193					$result = $res_13;194					$this->pos = $pos_13;195					$_24 = FALSE; break;196				}197				while(0);198				if( $_24 === TRUE ) { $_26 = TRUE; break; }199				$result = $res_11;200				$this->pos = $pos_11;201				$_26 = FALSE; break;202			}203			while(0);204			if( $_26 === FALSE) { $_28 = FALSE; break; }205			$_28 = TRUE; break;206		}207		while(0);208		if( $_28 === FALSE) {209			$result = $res_29;210			$this->pos = $pos_29;211			unset( $res_29 );212			unset( $pos_29 );213			break;214		}215		$count++;216	}217	if ($count >= 1) { return $this->finalise($result); }218	else { return FALSE; }219}220/* other: /=-_'()/ */221protected $match_other_typestack = array('other');222function match_other ($stack = array()) {223	$matchrule = "other"; $result = $this->construct($matchrule, $matchrule, null);224	if (( $subres = $this->rx( '/=-_\'()/' ) ) !== FALSE) {225		$result["text"] .= $subres;226		return $this->finalise($result);227	}228	else { return FALSE; }229}230/* any: /.+/ */231protected $match_any_typestack = array('any');232function match_any ($stack = array()) {233	$matchrule = "any"; $result = $this->construct($matchrule, $matchrule, null);234	if (( $subres = $this->rx( '/.+/' ) ) !== FALSE) {235		$result["text"] .= $subres;236		return $this->finalise($result);237	}238	else { return FALSE; }239}240/* token: normale* */241protected $match_token_typestack = array('token');242function match_token ($stack = array()) {243	$matchrule = "token"; $result = $this->construct($matchrule, $matchrule, null);244	while (true) {245		$res_32 = $result;246		$pos_32 = $this->pos;247		$matcher = 'match_'.'normale'; $key = $matcher; $pos = $this->pos;248		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );249		if ($subres !== FALSE) { $this->store( $result, $subres ); }250		else {251			$result = $res_32;252			$this->pos = $pos_32;253			unset( $res_32 );254			unset( $pos_32 );255			break;256		}257	}258	return $this->finalise($result);259}260/* string: (number | chars )+ */261protected $match_string_typestack = array('string');262function match_string ($stack = array()) {263	$matchrule = "string"; $result = $this->construct($matchrule, $matchrule, null);264	$count = 0;265	while (true) {266		$res_39 = $result;267		$pos_39 = $this->pos;268		$_38 = NULL;269		do {270			$_36 = NULL;271			do {272				$res_33 = $result;273				$pos_33 = $this->pos;274				$matcher = 'match_'.'number'; $key = $matcher; $pos = $this->pos;275				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );276				if ($subres !== FALSE) {277					$this->store( $result, $subres );278					$_36 = TRUE; break;279				}280				$result = $res_33;281				$this->pos = $pos_33;282				$matcher = 'match_'.'chars'; $key = $matcher; $pos = $this->pos;283				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );284				if ($subres !== FALSE) {285					$this->store( $result, $subres );286					$_36 = TRUE; break;287				}288				$result = $res_33;289				$this->pos = $pos_33;290				$_36 = FALSE; break;291			}292			while(0);293			if( $_36 === FALSE) { $_38 = FALSE; break; }294			$_38 = TRUE; break;295		}296		while(0);297		if( $_38 === FALSE) {298			$result = $res_39;299			$this->pos = $pos_39;300			unset( $res_39 );301			unset( $pos_39 );302			break;303		}304		$count++;305	}306	if ($count >= 1) { return $this->finalise($result); }307	else { return FALSE; }308}309/* dataString: number4 '-' number2 '-' number2 */310protected $match_dataString_typestack = array('dataString');311function match_dataString ($stack = array()) {312	$matchrule = "dataString"; $result = $this->construct($matchrule, $matchrule, null);313	$_45 = NULL;314	do {315		$matcher = 'match_'.'number4'; $key = $matcher; $pos = $this->pos;316		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );317		if ($subres !== FALSE) { $this->store( $result, $subres ); }318		else { $_45 = FALSE; break; }319		if (substr($this->string,$this->pos,1) == '-') {320			$this->pos += 1;321			$result["text"] .= '-';322		}323		else { $_45 = FALSE; break; }324		$matcher = 'match_'.'number2'; $key = $matcher; $pos = $this->pos;325		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );326		if ($subres !== FALSE) { $this->store( $result, $subres ); }327		else { $_45 = FALSE; break; }328		if (substr($this->string,$this->pos,1) == '-') {329			$this->pos += 1;330			$result["text"] .= '-';331		}332		else { $_45 = FALSE; break; }333		$matcher = 'match_'.'number2'; $key = $matcher; $pos = $this->pos;334		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );335		if ($subres !== FALSE) { $this->store( $result, $subres ); }336		else { $_45 = FALSE; break; }337		$_45 = TRUE; break;338	}339	while(0);340	if( $_45 === TRUE ) { return $this->finalise($result); }341	if( $_45 === FALSE) { return FALSE; }342}343/* expr: > :schema :documento :versione? :comunicato* :manifestazione? :partizione? :proprieta? :extra? > | :extra */344protected $match_expr_typestack = array('expr');345function match_expr ($stack = array()) {346	$matchrule = "expr"; $result = $this->construct($matchrule, $matchrule, null);347	$_61 = NULL;348	do {349		$res_47 = $result;350		$pos_47 = $this->pos;351		$_58 = NULL;352		do {353			if (( $subres = $this->whitespace(  ) ) !== FALSE) { $result["text"] .= $subres; }354			$matcher = 'match_'.'schema'; $key = $matcher; $pos = $this->pos;355			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );356			if ($subres !== FALSE) {357				$this->store( $result, $subres, "schema" );358			}359			else { $_58 = FALSE; break; }360			$matcher = 'match_'.'documento'; $key = $matcher; $pos = $this->pos;361			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );362			if ($subres !== FALSE) {363				$this->store( $result, $subres, "documento" );364			}365			else { $_58 = FALSE; break; }366			$res_51 = $result;367			$pos_51 = $this->pos;368			$matcher = 'match_'.'versione'; $key = $matcher; $pos = $this->pos;369			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );370			if ($subres !== FALSE) {371				$this->store( $result, $subres, "versione" );372			}373			else {374				$result = $res_51;375				$this->pos = $pos_51;376				unset( $res_51 );377				unset( $pos_51 );378			}379			while (true) {380				$res_52 = $result;381				$pos_52 = $this->pos;382				$matcher = 'match_'.'comunicato'; $key = $matcher; $pos = $this->pos;383				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );384				if ($subres !== FALSE) {385					$this->store( $result, $subres, "comunicato" );386				}387				else {388					$result = $res_52;389					$this->pos = $pos_52;390					unset( $res_52 );391					unset( $pos_52 );392					break;393				}394			}395			$res_53 = $result;396			$pos_53 = $this->pos;397			$matcher = 'match_'.'manifestazione'; $key = $matcher; $pos = $this->pos;398			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );399			if ($subres !== FALSE) {400				$this->store( $result, $subres, "manifestazione" );401			}402			else {403				$result = $res_53;404				$this->pos = $pos_53;405				unset( $res_53 );406				unset( $pos_53 );407			}408			$res_54 = $result;409			$pos_54 = $this->pos;410			$matcher = 'match_'.'partizione'; $key = $matcher; $pos = $this->pos;411			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );412			if ($subres !== FALSE) {413				$this->store( $result, $subres, "partizione" );414			}415			else {416				$result = $res_54;417				$this->pos = $pos_54;418				unset( $res_54 );419				unset( $pos_54 );420			}421			$res_55 = $result;422			$pos_55 = $this->pos;423			$matcher = 'match_'.'proprieta'; $key = $matcher; $pos = $this->pos;424			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );425			if ($subres !== FALSE) {426				$this->store( $result, $subres, "proprieta" );427			}428			else {429				$result = $res_55;430				$this->pos = $pos_55;431				unset( $res_55 );432				unset( $pos_55 );433			}434			$res_56 = $result;435			$pos_56 = $this->pos;436			$matcher = 'match_'.'extra'; $key = $matcher; $pos = $this->pos;437			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );438			if ($subres !== FALSE) {439				$this->store( $result, $subres, "extra" );440			}441			else {442				$result = $res_56;443				$this->pos = $pos_56;444				unset( $res_56 );445				unset( $pos_56 );446			}447			if (( $subres = $this->whitespace(  ) ) !== FALSE) { $result["text"] .= $subres; }448			$_58 = TRUE; break;449		}450		while(0);451		if( $_58 === TRUE ) { $_61 = TRUE; break; }452		$result = $res_47;453		$this->pos = $pos_47;454		$matcher = 'match_'.'extra'; $key = $matcher; $pos = $this->pos;455		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );456		if ($subres !== FALSE) {457			$this->store( $result, $subres, "extra" );458			$_61 = TRUE; break;459		}460		$result = $res_47;461		$this->pos = $pos_47;462		$_61 = FALSE; break;463	}464	while(0);465	if( $_61 === TRUE ) { return $this->finalise($result); }466	if( $_61 === FALSE) { return FALSE; }467}468/* extra: any */469protected $match_extra_typestack = array('extra');470function match_extra ($stack = array()) {471	$matchrule = "extra"; $result = $this->construct($matchrule, $matchrule, null);472	$matcher = 'match_'.'any'; $key = $matcher; $pos = $this->pos;473	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );474	if ($subres !== FALSE) {475		$this->store( $result, $subres );476		return $this->finalise($result);477	}478	else { return FALSE; }479}480/* schema: "urn:nir:" */481protected $match_schema_typestack = array('schema');482function match_schema ($stack = array()) {483	$matchrule = "schema"; $result = $this->construct($matchrule, $matchrule, null);484	if (( $subres = $this->literal( 'urn:nir:' ) ) !== FALSE) {485		$result["text"] .= $subres;486		return $this->finalise($result);487	}488	else { return FALSE; }489}490/* documento: :autorita DP :provvedimento (DP :estremi (DP :annesso)*)? */491protected $match_documento_typestack = array('documento');492function match_documento ($stack = array()) {493	$matchrule = "documento"; $result = $this->construct($matchrule, $matchrule, null);494	$_76 = NULL;495	do {496		$matcher = 'match_'.'autorita'; $key = $matcher; $pos = $this->pos;497		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );498		if ($subres !== FALSE) {499			$this->store( $result, $subres, "autorita" );500		}501		else { $_76 = FALSE; break; }502		$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;503		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );504		if ($subres !== FALSE) { $this->store( $result, $subres ); }505		else { $_76 = FALSE; break; }506		$matcher = 'match_'.'provvedimento'; $key = $matcher; $pos = $this->pos;507		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );508		if ($subres !== FALSE) {509			$this->store( $result, $subres, "provvedimento" );510		}511		else { $_76 = FALSE; break; }512		$res_75 = $result;513		$pos_75 = $this->pos;514		$_74 = NULL;515		do {516			$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;517			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );518			if ($subres !== FALSE) { $this->store( $result, $subres ); }519			else { $_74 = FALSE; break; }520			$matcher = 'match_'.'estremi'; $key = $matcher; $pos = $this->pos;521			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );522			if ($subres !== FALSE) {523				$this->store( $result, $subres, "estremi" );524			}525			else { $_74 = FALSE; break; }526			while (true) {527				$res_73 = $result;528				$pos_73 = $this->pos;529				$_72 = NULL;530				do {531					$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;532					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );533					if ($subres !== FALSE) { $this->store( $result, $subres ); }534					else { $_72 = FALSE; break; }535					$matcher = 'match_'.'annesso'; $key = $matcher; $pos = $this->pos;536					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );537					if ($subres !== FALSE) {538						$this->store( $result, $subres, "annesso" );539					}540					else { $_72 = FALSE; break; }541					$_72 = TRUE; break;542				}543				while(0);544				if( $_72 === FALSE) {545					$result = $res_73;546					$this->pos = $pos_73;547					unset( $res_73 );548					unset( $pos_73 );549					break;550				}551			}552			$_74 = TRUE; break;553		}554		while(0);555		if( $_74 === FALSE) {556			$result = $res_75;557			$this->pos = $pos_75;558			unset( $res_75 );559			unset( $pos_75 );560		}561		$_76 = TRUE; break;562	}563	while(0);564	if( $_76 === TRUE ) { return $this->finalise($result); }565	if( $_76 === FALSE) { return FALSE; }566}567/* autorita: :soggetto (PLUS :soggetto)* */568protected $match_autorita_typestack = array('autorita');569function match_autorita ($stack = array()) {570	$matchrule = "autorita"; $result = $this->construct($matchrule, $matchrule, null);571	$_83 = NULL;572	do {573		$matcher = 'match_'.'soggetto'; $key = $matcher; $pos = $this->pos;574		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );575		if ($subres !== FALSE) {576			$this->store( $result, $subres, "soggetto" );577		}578		else { $_83 = FALSE; break; }579		while (true) {580			$res_82 = $result;581			$pos_82 = $this->pos;582			$_81 = NULL;583			do {584				$matcher = 'match_'.'PLUS'; $key = $matcher; $pos = $this->pos;585				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );586				if ($subres !== FALSE) { $this->store( $result, $subres ); }587				else { $_81 = FALSE; break; }588				$matcher = 'match_'.'soggetto'; $key = $matcher; $pos = $this->pos;589				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );590				if ($subres !== FALSE) {591					$this->store( $result, $subres, "soggetto" );592				}593				else { $_81 = FALSE; break; }594				$_81 = TRUE; break;595			}596			while(0);597			if( $_81 === FALSE) {598				$result = $res_82;599				$this->pos = $pos_82;600				unset( $res_82 );601				unset( $pos_82 );602				break;603			}604		}605		$_83 = TRUE; break;606	}607	while(0);608	if( $_83 === TRUE ) { return $this->finalise($result); }609	if( $_83 === FALSE) { return FALSE; }610}611/* soggetto: 612	istituzione:token PV organo:token PV organo:token PV organo:token PV organo:token PV funzione:token | 613	istituzione:token PV organo:token PV organo:token PV organo:token PV funzione:token | 614	istituzione:token PV organo:token PV organo:token PV funzione:token | 615	istituzione:token PV organo:token PV funzione:token | 616	istituzione:token PV funzione:token | 617	carica:token */618protected $match_soggetto_typestack = array('soggetto');619function match_soggetto ($stack = array()) {620	$matchrule = "soggetto"; $result = $this->construct($matchrule, $matchrule, null);621	$_144 = NULL;622	do {623		$res_85 = $result;624		$pos_85 = $this->pos;625		$_97 = NULL;626		do {627			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;628			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );629			if ($subres !== FALSE) {630				$this->store( $result, $subres, "istituzione" );631			}632			else { $_97 = FALSE; break; }633			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;634			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );635			if ($subres !== FALSE) { $this->store( $result, $subres ); }636			else { $_97 = FALSE; break; }637			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;638			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );639			if ($subres !== FALSE) {640				$this->store( $result, $subres, "organo" );641			}642			else { $_97 = FALSE; break; }643			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;644			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );645			if ($subres !== FALSE) { $this->store( $result, $subres ); }646			else { $_97 = FALSE; break; }647			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;648			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );649			if ($subres !== FALSE) {650				$this->store( $result, $subres, "organo" );651			}652			else { $_97 = FALSE; break; }653			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;654			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );655			if ($subres !== FALSE) { $this->store( $result, $subres ); }656			else { $_97 = FALSE; break; }657			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;658			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );659			if ($subres !== FALSE) {660				$this->store( $result, $subres, "organo" );661			}662			else { $_97 = FALSE; break; }663			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;664			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );665			if ($subres !== FALSE) { $this->store( $result, $subres ); }666			else { $_97 = FALSE; break; }667			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;668			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );669			if ($subres !== FALSE) {670				$this->store( $result, $subres, "organo" );671			}672			else { $_97 = FALSE; break; }673			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;674			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );675			if ($subres !== FALSE) { $this->store( $result, $subres ); }676			else { $_97 = FALSE; break; }677			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;678			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );679			if ($subres !== FALSE) {680				$this->store( $result, $subres, "funzione" );681			}682			else { $_97 = FALSE; break; }683			$_97 = TRUE; break;684		}685		while(0);686		if( $_97 === TRUE ) { $_144 = TRUE; break; }687		$result = $res_85;688		$this->pos = $pos_85;689		$_142 = NULL;690		do {691			$res_99 = $result;692			$pos_99 = $this->pos;693			$_109 = NULL;694			do {695				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;696				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );697				if ($subres !== FALSE) {698					$this->store( $result, $subres, "istituzione" );699				}700				else { $_109 = FALSE; break; }701				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;702				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );703				if ($subres !== FALSE) { $this->store( $result, $subres ); }704				else { $_109 = FALSE; break; }705				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;706				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );707				if ($subres !== FALSE) {708					$this->store( $result, $subres, "organo" );709				}710				else { $_109 = FALSE; break; }711				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;712				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );713				if ($subres !== FALSE) { $this->store( $result, $subres ); }714				else { $_109 = FALSE; break; }715				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;716				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );717				if ($subres !== FALSE) {718					$this->store( $result, $subres, "organo" );719				}720				else { $_109 = FALSE; break; }721				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;722				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );723				if ($subres !== FALSE) { $this->store( $result, $subres ); }724				else { $_109 = FALSE; break; }725				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;726				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );727				if ($subres !== FALSE) {728					$this->store( $result, $subres, "organo" );729				}730				else { $_109 = FALSE; break; }731				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;732				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );733				if ($subres !== FALSE) { $this->store( $result, $subres ); }734				else { $_109 = FALSE; break; }735				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;736				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );737				if ($subres !== FALSE) {738					$this->store( $result, $subres, "funzione" );739				}740				else { $_109 = FALSE; break; }741				$_109 = TRUE; break;742			}743			while(0);744			if( $_109 === TRUE ) { $_142 = TRUE; break; }745			$result = $res_99;746			$this->pos = $pos_99;747			$_140 = NULL;748			do {749				$res_111 = $result;750				$pos_111 = $this->pos;751				$_119 = NULL;752				do {753					$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;754					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );755					if ($subres !== FALSE) {756						$this->store( $result, $subres, "istituzione" );757					}758					else { $_119 = FALSE; break; }759					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;760					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );761					if ($subres !== FALSE) { $this->store( $result, $subres ); }762					else { $_119 = FALSE; break; }763					$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;764					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );765					if ($subres !== FALSE) {766						$this->store( $result, $subres, "organo" );767					}768					else { $_119 = FALSE; break; }769					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;770					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );771					if ($subres !== FALSE) { $this->store( $result, $subres ); }772					else { $_119 = FALSE; break; }773					$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;774					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );775					if ($subres !== FALSE) {776						$this->store( $result, $subres, "organo" );777					}778					else { $_119 = FALSE; break; }779					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;780					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );781					if ($subres !== FALSE) { $this->store( $result, $subres ); }782					else { $_119 = FALSE; break; }783					$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;784					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );785					if ($subres !== FALSE) {786						$this->store( $result, $subres, "funzione" );787					}788					else { $_119 = FALSE; break; }789					$_119 = TRUE; break;790				}791				while(0);792				if( $_119 === TRUE ) { $_140 = TRUE; break; }793				$result = $res_111;794				$this->pos = $pos_111;795				$_138 = NULL;796				do {797					$res_121 = $result;798					$pos_121 = $this->pos;799					$_127 = NULL;800					do {801						$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;802						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );803						if ($subres !== FALSE) {804							$this->store( $result, $subres, "istituzione" );805						}806						else { $_127 = FALSE; break; }807						$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;808						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );809						if ($subres !== FALSE) {810							$this->store( $result, $subres );811						}812						else { $_127 = FALSE; break; }813						$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;814						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );815						if ($subres !== FALSE) {816							$this->store( $result, $subres, "organo" );817						}818						else { $_127 = FALSE; break; }819						$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;820						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );821						if ($subres !== FALSE) {822							$this->store( $result, $subres );823						}824						else { $_127 = FALSE; break; }825						$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;826						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );827						if ($subres !== FALSE) {828							$this->store( $result, $subres, "funzione" );829						}830						else { $_127 = FALSE; break; }831						$_127 = TRUE; break;832					}833					while(0);834					if( $_127 === TRUE ) { $_138 = TRUE; break; }835					$result = $res_121;836					$this->pos = $pos_121;837					$_136 = NULL;838					do {839						$res_129 = $result;840						$pos_129 = $this->pos;841						$_133 = NULL;842						do {843							$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;844							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );845							if ($subres !== FALSE) {846								$this->store( $result, $subres, "istituzione" );847							}848							else { $_133 = FALSE; break; }849							$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;850							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );851							if ($subres !== FALSE) {852								$this->store( $result, $subres );853							}854							else { $_133 = FALSE; break; }855							$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;856							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );857							if ($subres !== FALSE) {858								$this->store( $result, $subres, "funzione" );859							}860							else { $_133 = FALSE; break; }861							$_133 = TRUE; break;862						}863						while(0);864						if( $_133 === TRUE ) { $_136 = TRUE; break; }865						$result = $res_129;866						$this->pos = $pos_129;867						$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;868						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );869						if ($subres !== FALSE) {870							$this->store( $result, $subres, "carica" );871							$_136 = TRUE; break;872						}873						$result = $res_129;874						$this->pos = $pos_129;875						$_136 = FALSE; break;876					}877					while(0);878					if( $_136 === TRUE ) { $_138 = TRUE; break; }879					$result = $res_121;880					$this->pos = $pos_121;881					$_138 = FALSE; break;882				}883				while(0);884				if( $_138 === TRUE ) { $_140 = TRUE; break; }885				$result = $res_111;886				$this->pos = $pos_111;887				$_140 = FALSE; break;888			}889			while(0);890			if( $_140 === TRUE ) { $_142 = TRUE; break; }891			$result = $res_99;892			$this->pos = $pos_99;893			$_142 = FALSE; break;894		}895		while(0);896		if( $_142 === TRUE ) { $_144 = TRUE; break; }897		$result = $res_85;898		$this->pos = $pos_85;899		$_144 = FALSE; break;900	}901	while(0);902	if( $_144 === TRUE ) { return $this->finalise($result); }903	if( $_144 === FALSE) { return FALSE; }904}905/* suggetto: elemento:token (PV elemento:token)* */906protected $match_suggetto_typestack = array('suggetto');907function match_suggetto ($stack = array()) {908	$matchrule = "suggetto"; $result = $this->construct($matchrule, $matchrule, null);909	$_151 = NULL;910	do {911		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;912		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );913		if ($subres !== FALSE) {914			$this->store( $result, $subres, "elemento" );915		}916		else { $_151 = FALSE; break; }917		while (true) {918			$res_150 = $result;919			$pos_150 = $this->pos;920			$_149 = NULL;921			do {922				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;923				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );924				if ($subres !== FALSE) { $this->store( $result, $subres ); }925				else { $_149 = FALSE; break; }926				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;927				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );928				if ($subres !== FALSE) {929					$this->store( $result, $subres, "elemento" );930				}931				else { $_149 = FALSE; break; }932				$_149 = TRUE; break;933			}934			while(0);935			if( $_149 === FALSE) {936				$result = $res_150;937				$this->pos = $pos_150;938				unset( $res_150 );939				unset( $pos_150 );940				break;941			}942		}943		$_151 = TRUE; break;944	}945	while(0);946	if( $_151 === TRUE ) { return $this->finalise($result); }947	if( $_151 === FALSE) { return FALSE; }948}949/* provvedimento: tipo:token ( PV :spec)* */950protected $match_provvedimento_typestack = array('provvedimento');951function match_provvedimento ($stack = array()) {952	$matchrule = "provvedimento"; $result = $this->construct($matchrule, $matchrule, null);953	$_158 = NULL;954	do {955		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;956		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );957		if ($subres !== FALSE) {958			$this->store( $result, $subres, "tipo" );959		}960		else { $_158 = FALSE; break; }961		while (true) {962			$res_157 = $result;963			$pos_157 = $this->pos;964			$_156 = NULL;965			do {966				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;967				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );968				if ($subres !== FALSE) { $this->store( $result, $subres ); }969				else { $_156 = FALSE; break; }970				$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;971				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );972				if ($subres !== FALSE) {973					$this->store( $result, $subres, "spec" );974				}975				else { $_156 = FALSE; break; }976				$_156 = TRUE; break;977			}978			while(0);979			if( $_156 === FALSE) {980				$result = $res_157;981				$this->pos = $pos_157;982				unset( $res_157 );983				unset( $pos_157 );984				break;985			}986		}987		$_158 = TRUE; break;988	}989	while(0);990	if( $_158 === TRUE ) { return $this->finalise($result); }991	if( $_158 === FALSE) { return FALSE; }992}993/* estremi: 994	(:date (PV :numeri (V :numeri)*) ?) |995	(:periodo PV :date (PV :numeri (V :numeri)*) ?) |996	(:periodo (PV :numeri (V :numeri)*) ?) */997protected $match_estremi_typestack = array('estremi');998function match_estremi ($stack = array()) {999	$matchrule = "estremi"; $result = $this->construct($matchrule, $matchrule, null);1000	$_199 = NULL;1001	do {1002		$res_160 = $result;1003		$pos_160 = $this->pos;1004		$_170 = NULL;1005		do {1006			$matcher = 'match_'.'date'; $key = $matcher; $pos = $this->pos;1007			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1008			if ($subres !== FALSE) {1009				$this->store( $result, $subres, "date" );1010			}1011			else { $_170 = FALSE; break; }1012			$res_169 = $result;1013			$pos_169 = $this->pos;1014			$_168 = NULL;1015			do {1016				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1017				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1018				if ($subres !== FALSE) { $this->store( $result, $subres ); }1019				else { $_168 = FALSE; break; }1020				$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1021				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1022				if ($subres !== FALSE) {1023					$this->store( $result, $subres, "numeri" );1024				}1025				else { $_168 = FALSE; break; }1026				while (true) {1027					$res_167 = $result;1028					$pos_167 = $this->pos;1029					$_166 = NULL;1030					do {1031						$matcher = 'match_'.'V'; $key = $matcher; $pos = $this->pos;1032						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1033						if ($subres !== FALSE) {1034							$this->store( $result, $subres );1035						}1036						else { $_166 = FALSE; break; }1037						$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1038						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1039						if ($subres !== FALSE) {1040							$this->store( $result, $subres, "numeri" );1041						}1042						else { $_166 = FALSE; break; }1043						$_166 = TRUE; break;1044					}1045					while(0);1046					if( $_166 === FALSE) {1047						$result = $res_167;1048						$this->pos = $pos_167;1049						unset( $res_167 );1050						unset( $pos_167 );1051						break;1052					}1053				}1054				$_168 = TRUE; break;1055			}1056			while(0);1057			if( $_168 === FALSE) {1058				$result = $res_169;1059				$this->pos = $pos_169;1060				unset( $res_169 );1061				unset( $pos_169 );1062			}1063			$_170 = TRUE; break;1064		}1065		while(0);1066		if( $_170 === TRUE ) { $_199 = TRUE; break; }1067		$result = $res_160;1068		$this->pos = $pos_160;1069		$_197 = NULL;1070		do {1071			$res_172 = $result;1072			$pos_172 = $this->pos;1073			$_184 = NULL;1074			do {1075				$matcher = 'match_'.'periodo'; $key = $matcher; $pos = $this->pos;1076				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1077				if ($subres !== FALSE) {1078					$this->store( $result, $subres, "periodo" );1079				}1080				else { $_184 = FALSE; break; }1081				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1082				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1083				if ($subres !== FALSE) { $this->store( $result, $subres ); }1084				else { $_184 = FALSE; break; }1085				$matcher = 'match_'.'date'; $key = $matcher; $pos = $this->pos;1086				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1087				if ($subres !== FALSE) {1088					$this->store( $result, $subres, "date" );1089				}1090				else { $_184 = FALSE; break; }1091				$res_183 = $result;1092				$pos_183 = $this->pos;1093				$_182 = NULL;1094				do {1095					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1096					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1097					if ($subres !== FALSE) { $this->store( $result, $subres ); }1098					else { $_182 = FALSE; break; }1099					$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1100					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1101					if ($subres !== FALSE) {1102						$this->store( $result, $subres, "numeri" );1103					}1104					else { $_182 = FALSE; break; }1105					while (true) {1106						$res_181 = $result;1107						$pos_181 = $this->pos;1108						$_180 = NULL;1109						do {1110							$matcher = 'match_'.'V'; $key = $matcher; $pos = $this->pos;1111							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1112							if ($subres !== FALSE) {1113								$this->store( $result, $subres );1114							}1115							else { $_180 = FALSE; break; }1116							$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1117							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1118							if ($subres !== FALSE) {1119								$this->store( $result, $subres, "numeri" );1120							}1121							else { $_180 = FALSE; break; }1122							$_180 = TRUE; break;1123						}1124						while(0);1125						if( $_180 === FALSE) {1126							$result = $res_181;1127							$this->pos = $pos_181;1128							unset( $res_181 );1129							unset( $pos_181 );1130							break;1131						}1132					}1133					$_182 = TRUE; break;1134				}1135				while(0);1136				if( $_182 === FALSE) {1137					$result = $res_183;1138					$this->pos = $pos_183;1139					unset( $res_183 );1140					unset( $pos_183 );1141				}1142				$_184 = TRUE; break;1143			}1144			while(0);1145			if( $_184 === TRUE ) { $_197 = TRUE; break; }1146			$result = $res_172;1147			$this->pos = $pos_172;1148			$_195 = NULL;1149			do {1150				$matcher = 'match_'.'periodo'; $key = $matcher; $pos = $this->pos;1151				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1152				if ($subres !== FALSE) {1153					$this->store( $result, $subres, "periodo" );1154				}1155				else { $_195 = FALSE; break; }1156				$res_194 = $result;1157				$pos_194 = $this->pos;1158				$_193 = NULL;1159				do {1160					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1161					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1162					if ($subres !== FALSE) { $this->store( $result, $subres ); }1163					else { $_193 = FALSE; break; }1164					$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1165					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1166					if ($subres !== FALSE) {1167						$this->store( $result, $subres, "numeri" );1168					}1169					else { $_193 = FALSE; break; }1170					while (true) {1171						$res_192 = $result;1172						$pos_192 = $this->pos;1173						$_191 = NULL;1174						do {1175							$matcher = 'match_'.'V'; $key = $matcher; $pos = $this->pos;1176							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1177							if ($subres !== FALSE) {1178								$this->store( $result, $subres );1179							}1180							else { $_191 = FALSE; break; }1181							$matcher = 'match_'.'numeri'; $key = $matcher; $pos = $this->pos;1182							$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1183							if ($subres !== FALSE) {1184								$this->store( $result, $subres, "numeri" );1185							}1186							else { $_191 = FALSE; break; }1187							$_191 = TRUE; break;1188						}1189						while(0);1190						if( $_191 === FALSE) {1191							$result = $res_192;1192							$this->pos = $pos_192;1193							unset( $res_192 );1194							unset( $pos_192 );1195							break;1196						}1197					}1198					$_193 = TRUE; break;1199				}1200				while(0);1201				if( $_193 === FALSE) {1202					$result = $res_194;1203					$this->pos = $pos_194;1204					unset( $res_194 );1205					unset( $pos_194 );1206				}1207				$_195 = TRUE; break;1208			}1209			while(0);1210			if( $_195 === TRUE ) { $_197 = TRUE; break; }1211			$result = $res_172;1212			$this->pos = $pos_172;1213			$_197 = FALSE; break;1214		}1215		while(0);1216		if( $_197 === TRUE ) { $_199 = TRUE; break; }1217		$result = $res_160;1218		$this->pos = $pos_160;1219		$_199 = FALSE; break;1220	}1221	while(0);1222	if( $_199 === TRUE ) { return $this->finalise($result); }1223	if( $_199 === FALSE) { return FALSE; }1224}1225/* date: data:dataString (V data:dataString)* */1226protected $match_date_typestack = array('date');1227function match_date ($stack = array()) {1228	$matchrule = "date"; $result = $this->construct($matchrule, $matchrule, null);1229	$_206 = NULL;1230	do {1231		$matcher = 'match_'.'dataString'; $key = $matcher; $pos = $this->pos;1232		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1233		if ($subres !== FALSE) {1234			$this->store( $result, $subres, "data" );1235		}1236		else { $_206 = FALSE; break; }1237		while (true) {1238			$res_205 = $result;1239			$pos_205 = $this->pos;1240			$_204 = NULL;1241			do {1242				$matcher = 'match_'.'V'; $key = $matcher; $pos = $this->pos;1243				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1244				if ($subres !== FALSE) { $this->store( $result, $subres ); }1245				else { $_204 = FALSE; break; }1246				$matcher = 'match_'.'dataString'; $key = $matcher; $pos = $this->pos;1247				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1248				if ($subres !== FALSE) {1249					$this->store( $result, $subres, "data" );1250				}1251				else { $_204 = FALSE; break; }1252				$_204 = TRUE; break;1253			}1254			while(0);1255			if( $_204 === FALSE) {1256				$result = $res_205;1257				$this->pos = $pos_205;1258				unset( $res_205 );1259				unset( $pos_205 );1260				break;1261			}1262		}1263		$_206 = TRUE; break;1264	}1265	while(0);1266	if( $_206 === TRUE ) { return $this->finalise($result); }1267	if( $_206 === FALSE) { return FALSE; }1268}1269/* data: data:dataString */1270protected $match_data_typestack = array('data');1271function match_data ($stack = array()) {1272	$matchrule = "data"; $result = $this->construct($matchrule, $matchrule, null);1273	$matcher = 'match_'.'dataString'; $key = $matcher; $pos = $this->pos;1274	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1275	if ($subres !== FALSE) {1276		$this->store( $result, $subres, "data" );1277		return $this->finalise($result);1278	}1279	else { return FALSE; }1280}1281/* periodo: token */1282protected $match_periodo_typestack = array('periodo');1283function match_periodo ($stack = array()) {1284	$matchrule = "periodo"; $result = $this->construct($matchrule, $matchrule, null);1285	$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1286	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1287	if ($subres !== FALSE) {1288		$this->store( $result, $subres );1289		return $this->finalise($result);1290	}1291	else { return FALSE; }1292}1293/* numeri: 'nir-' numero+ | token */1294protected $match_numeri_typestack = array('numeri');1295function match_numeri ($stack = array()) {1296	$matchrule = "numeri"; $result = $this->construct($matchrule, $matchrule, null);1297	$_216 = NULL;1298	do {1299		$res_210 = $result;1300		$pos_210 = $this->pos;1301		$_213 = NULL;1302		do {1303			if (( $subres = $this->literal( 'nir-' ) ) !== FALSE) { $result["text"] .= $subres; }1304			else { $_213 = FALSE; break; }1305			$count = 0;1306			while (true) {1307				$res_212 = $result;1308				$pos_212 = $this->pos;1309				$matcher = 'match_'.'numero'; $key = $matcher; $pos = $this->pos;1310				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1311				if ($subres !== FALSE) { $this->store( $result, $subres ); }1312				else {1313					$result = $res_212;1314					$this->pos = $pos_212;1315					unset( $res_212 );1316					unset( $pos_212 );1317					break;1318				}1319				$count++;1320			}1321			if ($count >= 1) {  }1322			else { $_213 = FALSE; break; }1323			$_213 = TRUE; break;1324		}1325		while(0);1326		if( $_213 === TRUE ) { $_216 = TRUE; break; }1327		$result = $res_210;1328		$this->pos = $pos_210;1329		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1330		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1331		if ($subres !== FALSE) {1332			$this->store( $result, $subres );1333			$_216 = TRUE; break;1334		}1335		$result = $res_210;1336		$this->pos = $pos_210;1337		$_216 = FALSE; break;1338	}1339	while(0);1340	if( $_216 === TRUE ) { return $this->finalise($result); }1341	if( $_216 === FALSE) { return FALSE; }1342}1343/* annesso: id:token (PV :spec)* */1344protected $match_annesso_typestack = array('annesso');1345function match_annesso ($stack = array()) {1346	$matchrule = "annesso"; $result = $this->construct($matchrule, $matchrule, null);1347	$_223 = NULL;1348	do {1349		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1350		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1351		if ($subres !== FALSE) {1352			$this->store( $result, $subres, "id" );1353		}1354		else { $_223 = FALSE; break; }1355		while (true) {1356			$res_222 = $result;1357			$pos_222 = $this->pos;1358			$_221 = NULL;1359			do {1360				$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1361				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1362				if ($subres !== FALSE) { $this->store( $result, $subres ); }1363				else { $_221 = FALSE; break; }1364				$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1365				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1366				if ($subres !== FALSE) {1367					$this->store( $result, $subres, "spec" );1368				}1369				else { $_221 = FALSE; break; }1370				$_221 = TRUE; break;1371			}1372			while(0);1373			if( $_221 === FALSE) {1374				$result = $res_222;1375				$this->pos = $pos_222;1376				unset( $res_222 );1377				unset( $pos_222 );1378				break;1379			}1380		}1381		$_223 = TRUE; break;1382	}1383	while(0);1384	if( $_223 === TRUE ) { return $this->finalise($result); }1385	if( $_223 === FALSE) { return FALSE; }1386}1387/* spec: token */1388protected $match_spec_typestack = array('spec');1389function match_spec ($stack = array()) {1390	$matchrule = "spec"; $result = $this->construct($matchrule, $matchrule, null);1391	$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1392	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1393	if ($subres !== FALSE) {1394		$this->store( $result, $subres );1395		return $this->finalise($result);1396	}1397	else { return FALSE; }1398}1399/* vigenza: data */1400protected $match_vigenza_typestack = array('vigenza');1401function match_vigenza ($stack = array()) {1402	$matchrule = "vigenza"; $result = $this->construct($matchrule, $matchrule, null);1403	$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1404	$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1405	if ($subres !== FALSE) {1406		$this->store( $result, $subres );1407		return $this->finalise($result);1408	}1409	else { return FALSE; }1410}1411/* versione: '@' (:data | :spec) ( PV (:vigenza | :spec))? */1412protected $match_versione_typestack = array('versione');1413function match_versione ($stack = array()) {1414	$matchrule = "versione"; $result = $this->construct($matchrule, $matchrule, null);1415	$_245 = NULL;1416	do {1417		if (substr($this->string,$this->pos,1) == '@') {1418			$this->pos += 1;1419			$result["text"] .= '@';1420		}1421		else { $_245 = FALSE; break; }1422		$_233 = NULL;1423		do {1424			$_231 = NULL;1425			do {1426				$res_228 = $result;1427				$pos_228 = $this->pos;1428				$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1429				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1430				if ($subres !== FALSE) {1431					$this->store( $result, $subres, "data" );1432					$_231 = TRUE; break;1433				}1434				$result = $res_228;1435				$this->pos = $pos_228;1436				$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1437				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1438				if ($subres !== FALSE) {1439					$this->store( $result, $subres, "spec" );1440					$_231 = TRUE; break;1441				}1442				$result = $res_228;1443				$this->pos = $pos_228;1444				$_231 = FALSE; break;1445			}1446			while(0);1447			if( $_231 === FALSE) { $_233 = FALSE; break; }1448			$_233 = TRUE; break;1449		}1450		while(0);1451		if( $_233 === FALSE) { $_245 = FALSE; break; }1452		$res_244 = $result;1453		$pos_244 = $this->pos;1454		$_243 = NULL;1455		do {1456			$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1457			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1458			if ($subres !== FALSE) { $this->store( $result, $subres ); }1459			else { $_243 = FALSE; break; }1460			$_241 = NULL;1461			do {1462				$_239 = NULL;1463				do {1464					$res_236 = $result;1465					$pos_236 = $this->pos;1466					$matcher = 'match_'.'vigenza'; $key = $matcher; $pos = $this->pos;1467					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1468					if ($subres !== FALSE) {1469						$this->store( $result, $subres, "vigenza" );1470						$_239 = TRUE; break;1471					}1472					$result = $res_236;1473					$this->pos = $pos_236;1474					$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1475					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1476					if ($subres !== FALSE) {1477						$this->store( $result, $subres, "spec" );1478						$_239 = TRUE; break;1479					}1480					$result = $res_236;1481					$this->pos = $pos_236;1482					$_239 = FALSE; break;1483				}1484				while(0);1485				if( $_239 === FALSE) { $_241 = FALSE; break; }1486				$_241 = TRUE; break;1487			}1488			while(0);1489			if( $_241 === FALSE) { $_243 = FALSE; break; }1490			$_243 = TRUE; break;1491		}1492		while(0);1493		if( $_243 === FALSE) {1494			$result = $res_244;1495			$this->pos = $pos_244;1496			unset( $res_244 );1497			unset( $pos_244 );1498		}1499		$_245 = TRUE; break;1500	}1501	while(0);1502	if( $_245 === TRUE ) { return $this->finalise($result); }1503	if( $_245 === FALSE) { return FALSE; }1504}1505/* comunicato: '*' tipo:token PV :data */1506protected $match_comunicato_typestack = array('comunicato');1507function match_comunicato ($stack = array()) {1508	$matchrule = "comunicato"; $result = $this->construct($matchrule, $matchrule, null);1509	$_251 = NULL;1510	do {1511		if (substr($this->string,$this->pos,1) == '*') {1512			$this->pos += 1;1513			$result["text"] .= '*';1514		}1515		else { $_251 = FALSE; break; }1516		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1517		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1518		if ($subres !== FALSE) {1519			$this->store( $result, $subres, "tipo" );1520		}1521		else { $_251 = FALSE; break; }1522		$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1523		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1524		if ($subres !== FALSE) { $this->store( $result, $subres ); }1525		else { $_251 = FALSE; break; }1526		$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1527		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1528		if ($subres !== FALSE) {1529			$this->store( $result, $subres, "data" );1530		}1531		else { $_251 = FALSE; break; }1532		$_251 = TRUE; break;1533	}1534	while(0);1535	if( $_251 === TRUE ) { return $this->finalise($result); }1536	if( $_251 === FALSE) { return FALSE; }1537}1538/* manifestazione: '$' formato:(formato:token (PV :spec)*) editore:(DP nome:token (PV :spec)*) (componente:(DP nome:token (PV :spec)*))? */1539protected $match_manifestazione_typestack = array('manifestazione');1540function match_manifestazione ($stack = array()) {1541	$matchrule = "manifestazione"; $result = $this->construct($matchrule, $matchrule, null);1542	$_279 = NULL;1543	do {1544		if (substr($this->string,$this->pos,1) == '$') {1545			$this->pos += 1;1546			$result["text"] .= '$';1547		}1548		else { $_279 = FALSE; break; }1549		$stack[] = $result; $result = $this->construct( $matchrule, "formato" ); 1550		$_259 = NULL;1551		do {1552			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1553			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1554			if ($subres !== FALSE) {1555				$this->store( $result, $subres, "formato" );1556			}1557			else { $_259 = FALSE; break; }1558			while (true) {1559				$res_258 = $result;1560				$pos_258 = $this->pos;1561				$_257 = NULL;1562				do {1563					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1564					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1565					if ($subres !== FALSE) { $this->store( $result, $subres ); }1566					else { $_257 = FALSE; break; }1567					$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1568					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1569					if ($subres !== FALSE) {1570						$this->store( $result, $subres, "spec" );1571					}1572					else { $_257 = FALSE; break; }1573					$_257 = TRUE; break;1574				}1575				while(0);1576				if( $_257 === FALSE) {1577					$result = $res_258;1578					$this->pos = $pos_258;1579					unset( $res_258 );1580					unset( $pos_258 );1581					break;1582				}1583			}1584			$_259 = TRUE; break;1585		}1586		while(0);1587		if( $_259 === TRUE ) {1588			$subres = $result; $result = array_pop($stack);1589			$this->store( $result, $subres, 'formato' );1590		}1591		if( $_259 === FALSE) {1592			$result = array_pop($stack);1593			$_279 = FALSE; break;1594		}1595		$stack[] = $result; $result = $this->construct( $matchrule, "editore" ); 1596		$_267 = NULL;1597		do {1598			$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;1599			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1600			if ($subres !== FALSE) { $this->store( $result, $subres ); }1601			else { $_267 = FALSE; break; }1602			$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1603			$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1604			if ($subres !== FALSE) {1605				$this->store( $result, $subres, "nome" );1606			}1607			else { $_267 = FALSE; break; }1608			while (true) {1609				$res_266 = $result;1610				$pos_266 = $this->pos;1611				$_265 = NULL;1612				do {1613					$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1614					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1615					if ($subres !== FALSE) { $this->store( $result, $subres ); }1616					else { $_265 = FALSE; break; }1617					$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1618					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1619					if ($subres !== FALSE) {1620						$this->store( $result, $subres, "spec" );1621					}1622					else { $_265 = FALSE; break; }1623					$_265 = TRUE; break;1624				}1625				while(0);1626				if( $_265 === FALSE) {1627					$result = $res_266;1628					$this->pos = $pos_266;1629					unset( $res_266 );1630					unset( $pos_266 );1631					break;1632				}1633			}1634			$_267 = TRUE; break;1635		}1636		while(0);1637		if( $_267 === TRUE ) {1638			$subres = $result; $result = array_pop($stack);1639			$this->store( $result, $subres, 'editore' );1640		}1641		if( $_267 === FALSE) {1642			$result = array_pop($stack);1643			$_279 = FALSE; break;1644		}1645		$res_278 = $result;1646		$pos_278 = $this->pos;1647		$_277 = NULL;1648		do {1649			$stack[] = $result; $result = $this->construct( $matchrule, "componente" ); 1650			$_275 = NULL;1651			do {1652				$matcher = 'match_'.'DP'; $key = $matcher; $pos = $this->pos;1653				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1654				if ($subres !== FALSE) { $this->store( $result, $subres ); }1655				else { $_275 = FALSE; break; }1656				$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1657				$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1658				if ($subres !== FALSE) {1659					$this->store( $result, $subres, "nome" );1660				}1661				else { $_275 = FALSE; break; }1662				while (true) {1663					$res_274 = $result;1664					$pos_274 = $this->pos;1665					$_273 = NULL;1666					do {1667						$matcher = 'match_'.'PV'; $key = $matcher; $pos = $this->pos;1668						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1669						if ($subres !== FALSE) {1670							$this->store( $result, $subres );1671						}1672						else { $_273 = FALSE; break; }1673						$matcher = 'match_'.'spec'; $key = $matcher; $pos = $this->pos;1674						$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1675						if ($subres !== FALSE) {1676							$this->store( $result, $subres, "spec" );1677						}1678						else { $_273 = FALSE; break; }1679						$_273 = TRUE; break;1680					}1681					while(0);1682					if( $_273 === FALSE) {1683						$result = $res_274;1684						$this->pos = $pos_274;1685						unset( $res_274 );1686						unset( $pos_274 );1687						break;1688					}1689				}1690				$_275 = TRUE; break;1691			}1692			while(0);1693			if( $_275 === TRUE ) {1694				$subres = $result; $result = array_pop($stack);1695				$this->store( $result, $subres, 'componente' );1696			}1697			if( $_275 === FALSE) {1698				$result = array_pop($stack);1699				$_277 = FALSE; break;1700			}1701			$_277 = TRUE; break;1702		}1703		while(0);1704		if( $_277 === FALSE) {1705			$result = $res_278;1706			$this->pos = $pos_278;1707			unset( $res_278 );1708			unset( $pos_278 );1709		}1710		$_279 = TRUE; break;1711	}1712	while(0);1713	if( $_279 === TRUE ) { return $this->finalise($result); }1714	if( $_279 === FALSE) { return FALSE; }1715}1716/* partizione: '~' id:token */1717protected $match_partizione_typestack = array('partizione');1718function match_partizione ($stack = array()) {1719	$matchrule = "partizione"; $result = $this->construct($matchrule, $matchrule, null);1720	$_283 = NULL;1721	do {1722		if (substr($this->string,$this->pos,1) == '~') {1723			$this->pos += 1;1724			$result["text"] .= '~';1725		}1726		else { $_283 = FALSE; break; }1727		$matcher = 'match_'.'token'; $key = $matcher; $pos = $this->pos;1728		$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1729		if ($subres !== FALSE) {1730			$this->store( $result, $subres, "id" );1731		}1732		else { $_283 = FALSE; break; }1733		$_283 = TRUE; break;1734	}1735	while(0);1736	if( $_283 === TRUE ) { return $this->finalise($result); }1737	if( $_283 === FALSE) { return FALSE; }1738}1739/* proprieta: '!' ( 'vig=' vigore:data | 'eff=' efficacia:data) */1740protected $match_proprieta_typestack = array('proprieta');1741function match_proprieta ($stack = array()) {1742	$matchrule = "proprieta"; $result = $this->construct($matchrule, $matchrule, null);1743	$_299 = NULL;1744	do {1745		if (substr($this->string,$this->pos,1) == '!') {1746			$this->pos += 1;1747			$result["text"] .= '!';1748		}1749		else { $_299 = FALSE; break; }1750		$_297 = NULL;1751		do {1752			$_295 = NULL;1753			do {1754				$res_286 = $result;1755				$pos_286 = $this->pos;1756				$_289 = NULL;1757				do {1758					if (( $subres = $this->literal( 'vig=' ) ) !== FALSE) { $result["text"] .= $subres; }1759					else { $_289 = FALSE; break; }1760					$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1761					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1762					if ($subres !== FALSE) {1763						$this->store( $result, $subres, "vigore" );1764					}1765					else { $_289 = FALSE; break; }1766					$_289 = TRUE; break;1767				}1768				while(0);1769				if( $_289 === TRUE ) { $_295 = TRUE; break; }1770				$result = $res_286;1771				$this->pos = $pos_286;1772				$_293 = NULL;1773				do {1774					if (( $subres = $this->literal( 'eff=' ) ) !== FALSE) { $result["text"] .= $subres; }1775					else { $_293 = FALSE; break; }1776					$matcher = 'match_'.'data'; $key = $matcher; $pos = $this->pos;1777					$subres = ( $this->packhas( $key, $pos ) ? $this->packread( $key, $pos ) : $this->packwrite( $key, $pos, $this->$matcher(array_merge($stack, array($result))) ) );1778					if ($subres !== FALSE) {1779						$this->store( $result, $subres, "efficacia" );1780					}1781					else { $_293 = FALSE; break; }1782					$_293 = TRUE; break;1783				}1784				while(0);1785				if( $_293 === TRUE ) { $_295 = TRUE; break; }1786				$result = $res_286;1787				$this->pos = $pos_286;1788				$_295 = FALSE; break;1789			}1790			while(0);1791			if( $_295 === FALSE) { $_297 = FALSE; break; }1792			$_297 = TRUE; break;1793		}1794		while(0);1795		if( $_297 === FALSE) { $_299 = FALSE; break; }1796		$_299 = TRUE; break;1797	}1798	while(0);1799	if( $_299 === TRUE ) { return $this->finalise($result); }1800	if( $_299 === FALSE) { return FALSE; }1801}1802}1803?>...WeeklyReport.php
Source: WeeklyReport.php 
1<?php2defined('BASEPATH') OR exit('No direct script access allowed');3/*4  @Author : Ritesh Rana5  @Desc   : Save weekly report6  @Input    :7  @Output   :8  @Date   : 19/03/20189 */10class WeeklyReport extends CI_Controller {11    function __construct() {12        parent::__construct();13        if (checkPermission('WeeklyReport', 'view') == false) {14            redirect('/Dashboard');15        }        16        $this->viewname = $this->router->fetch_class();17        $this->method = $this->router->fetch_method();18        $this->load->library(array('form_validation', 'Session'));19    }20    /*21      @Author : Ritesh Rana22      @Desc   : Weekly report index page23      @Input  : yp id24      @Output :25      @Date   : 16/03/201826     */27    public function index($id,$care_home_id=0,$past_care_id=0) {28         /*29                Ritesh Rana30                for past care id inserted for archive full functionality31                */32        if ($past_care_id !== 0) {33            $temp = $this->common_model->get_records(PAST_CARE_HOME_INFO, array('move_date'), '', '', array("yp_id" => $id, "past_carehome" => $care_home_id));34            $data_care_home_detail = $this->common_model->get_records(PAST_CARE_HOME_INFO, array("enter_date,move_date"), '', '', array("yp_id" => $id, "move_date <= " => $temp[0]['move_date']));35            $created_date = $movedate = '';36            $count_care = count($data_care_home_detail);37            if ($count_care >= 1) {38                $created_date = $data_care_home_detail[0]['enter_date'];39                $movedate = $data_care_home_detail[$count_care - 1]['move_date'];40            } elseif ($count_care == 0) {41                $created_date = $data_care_home_detail[0]['enter_date'];42                $movedate = $data_care_home_detail[0]['move_date'];43            }44        }45        if (is_numeric($id)) {46            //get YP information47            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");48            $data['YP_details'] = YpDetails($id,$fields);49            if (empty($data['YP_details'])) {50                $msg = $this->lang->line('common_no_record_found');51                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");52                redirect('YoungPerson');53            }54            $searchtext = $perpage = '';55            $searchtext = $this->input->post('searchtext');56            $sortfield = $this->input->post('sortfield');57            $sortby = $this->input->post('sortby');58            $perpage = RECORD_PER_PAGE;59            $allflag = $this->input->post('allflag');60            if (!empty($allflag) && ($allflag == 'all' || $allflag == 'changesorting' || $allflag == 'changesearch')) {61                $this->session->unset_userdata('wr_data');62            }63            $searchsort_session = $this->session->userdata('wr_data');64            //Sorting65            if (!empty($sortfield) && !empty($sortby)) {66                $data['sortfield'] = $sortfield;67                $data['sortby'] = $sortby;68            } else {69                if (!empty($searchsort_session['sortfield'])) {70                    $data['sortfield'] = $searchsort_session['sortfield'];71                    $data['sortby'] = $searchsort_session['sortby'];72                    $sortfield = $searchsort_session['sortfield'];73                    $sortby = $searchsort_session['sortby'];74                } else {75                    $sortfield = 'wr.created_date';76                    $sortby = 'desc';77                    $data['sortfield'] = $sortfield;78                    $data['sortby'] = $sortby;79                }80            }81            //Search text82            if (!empty($searchtext)) {83                $data['searchtext'] = $searchtext;84            } else {85                if (empty($allflag) && !empty($searchsort_session['searchtext'])) {86                    $data['searchtext'] = $searchsort_session['searchtext'];87                    $searchtext = $data['searchtext'];88                } else {89                    $data['searchtext'] = '';90                }91            }92            if (!empty($perpage) && $perpage != 'null') {93                $data['perpage'] = $perpage;94                $config['per_page'] = $perpage;95            } else {96                if (!empty($searchsort_session['perpage'])) {97                    $data['perpage'] = trim($searchsort_session['perpage']);98                    $config['per_page'] = trim($searchsort_session['perpage']);99                } else {100                    $config['per_page'] = RECORD_PER_PAGE;101                    $data['perpage'] = RECORD_PER_PAGE;102                }103            }104            //pagination configuration105            $config['first_link'] = 'First';106        if($past_care_id == 0){107                $config['base_url'] = base_url() . $this->viewname . '/index/' . $id;108            if (!empty($allflag) && ($allflag == 'all' || $allflag == 'changesorting' || $allflag == 'changesearch')) {109                $config['uri_segment'] = 0;110                $uri_segment = 0;111            } else {112                $config['uri_segment'] = 4;113                $uri_segment = $this->uri->segment(4);114            }115            //Query116            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];117            $table = WEEKLY_REPORT . ' as wr';118            $where = array("wr.yp_id" => $id,"wr.is_archive"=> 0,"wr.is_delete"=> 0);119            120            $fields = array("l.login_id, CONCAT(`firstname`,' ', `lastname`) as name, ch.care_home_name, l.firstname, l.lastname, wr.*,count(wrs.weekly_report_id) as sent_report");121            $join_tables = array(LOGIN . ' as l' => 'l.login_id = wr.created_by',WR_REPORT_SENT . ' as wrs' => 'wrs.weekly_report_id= wr.weekly_report_id',CARE_HOME . ' as ch' => 'ch.care_home_id = wr.care_home_id');122            if (!empty($searchtext)) {123                $searchtext = html_entity_decode(trim(addslashes($searchtext)));124                $match = array("wr.yp_id" => $id,"wr.is_archive"=> 0,"wr.is_delete"=> 0);125                $where_search = '((CONCAT(`firstname`, \' \', `lastname`) LIKE "%' . $searchtext . '%" OR l.firstname LIKE "%' . $searchtext . '%" OR l.lastname LIKE "%' . $searchtext . '%" OR wr.start_date LIKE "%' . $searchtext . '%" OR wr.end_date LIKE "%' . $searchtext . '%"  OR DATE_FORMAT(wr.start_date, "%d/%m/%Y") = "' . $searchtext . '"126                OR DATE_FORMAT(wr.end_date, "%d/%m/%Y") = "' . $searchtext . '"127                OR DATE_FORMAT(wr.created_date, "%d/%m/%Y") = "' . $searchtext . '"128                OR l.status LIKE "%' . $searchtext . '%")AND l.is_delete = "0")';129                $data['edit_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match,'' , $config['per_page'], $uri_segment, $sortfield, $sortby, 'wr.weekly_report_id', $where_search);130                131                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match, '', '', '', $sortfield, $sortby, 'wr.weekly_report_id', $where_search, '', '', '1');132            } else {133                $data['edit_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', $config['per_page'], $uri_segment, $sortfield, $sortby, 'wr.weekly_report_id', $where);134                135                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', $sortfield, $sortby, 'wr.weekly_report_id', $where, '', '', '1');136            }137            }else{138             $config['base_url'] = base_url() . $this->viewname . '/index/' . $id.'/'.$care_home_id.'/'.$past_care_id;139            if (!empty($allflag) && ($allflag == 'all' || $allflag == 'changesorting' || $allflag == 'changesearch')) {140                $config['uri_segment'] = 0;141                $uri_segment = 0;142            } else {143                $config['uri_segment'] = 6;144                $uri_segment = $this->uri->segment(6);145            }146            //Query147            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];148            $table = WEEKLY_REPORT . ' as wr';149            $where = array("wr.yp_id" => $id,"wr.is_archive"=> 0,"wr.is_delete"=> 0);150            $where_date = "wr.created_date BETWEEN  '".$created_date."' AND '".$movedate."'";151            152            $fields = array("l.login_id, CONCAT(`firstname`,' ', `lastname`) as name, ch.care_home_name, l.firstname, l.lastname, wr.*,count(wrs.weekly_report_id) as sent_report");153            $join_tables = array(LOGIN . ' as l' => 'l.login_id = wr.created_by',WR_REPORT_SENT . ' as wrs' => 'wrs.weekly_report_id= wr.weekly_report_id',CARE_HOME . ' as ch' => 'ch.care_home_id = wr.care_home_id');154            if (!empty($searchtext)) {155                $searchtext = html_entity_decode(trim(addslashes($searchtext)));156                $match = array("wr.yp_id" => $id,"wr.is_archive"=> 0,"wr.is_delete"=> 0);157                $where_search = '((CONCAT(`firstname`, \' \', `lastname`) LIKE "%' . $searchtext . '%" OR l.firstname LIKE "%' . $searchtext . '%" OR l.lastname LIKE "%' . $searchtext . '%" OR wr.start_date LIKE "%' . $searchtext . '%" OR wr.end_date LIKE "%' . $searchtext . '%"  OR DATE_FORMAT(wr.start_date, "%d/%m/%Y") = "' . $searchtext . '"158                OR DATE_FORMAT(wr.end_date, "%d/%m/%Y") = "' . $searchtext . '"159                OR DATE_FORMAT(wr.created_date, "%d/%m/%Y") = "' . $searchtext . '"160                OR l.status LIKE "%' . $searchtext . '%")AND l.is_delete = "0")';161                $data['edit_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match,'' , $config['per_page'], $uri_segment, $sortfield, $sortby, 'wr.weekly_report_id', $where_search,'','','','','',$where_date);162                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match, '', '', '', $sortfield, $sortby, 'wr.weekly_report_id', $where_search, '', '', '1','','',$where_date);163            } else {164                $data['edit_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', $config['per_page'], $uri_segment, $sortfield, $sortby, 'wr.weekly_report_id', $where,'','','','','',$where_date);165                    166                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', $sortfield, $sortby, 'wr.weekly_report_id', $where, '', '', '1','','',$where_date);167            }168            }169            $this->ajax_pagination->initialize($config);170            $data['pagination'] = $this->ajax_pagination->create_links();171            $data['uri_segment'] = $uri_segment;172            $sortsearchpage_data = array(173                'sortfield' => $data['sortfield'],174                'sortby' => $data['sortby'],175                'searchtext' => $data['searchtext'],176                'perpage' => trim($data['perpage']),177                'uri_segment' => $uri_segment,178                'total_rows' => $config['total_rows']);179            $data['ypid'] = $id;180            $data['care_home_id'] = $care_home_id;181            $data['past_care_id'] = $past_care_id;182            //get WR form183            $match = array('wr_form_id' => 1);184            $wr_forms = $this->common_model->get_records(WR_FORM, array("form_json_data"), '', '', $match);185            if (!empty($wr_forms)) {186                $data['form_data'] = json_decode($wr_forms[0]['form_json_data'], TRUE);187            }188            $this->session->set_userdata('wr_data', $sortsearchpage_data);189            setActiveSession('wr_data'); // set current Session active190            191            $data['header'] = array('menu_module' => 'YoungPerson');192            $data['crnt_view'] = $this->viewname;193            $data['footerJs'][0] = base_url('uploads/custom/js/wr/wr.js');194            if ($this->input->post('result_type') == 'ajax') {195                $this->load->view($this->viewname . '/ajaxlist', $data);196            } else {197                $data['main_content'] = '/WeeklyReport';198                $this->parser->parse('layouts/DefaultTemplate', $data);199            }200        } else {201            show_404();202        }203    }204    /*205      @Author : Ritesh Rana206      @Desc   : create Weekly report edit page207      @Input 	:208      @Output	:209      @Date   : 16/03/2018210     */211    public function edit($id, $ypid) {212        if (is_numeric($ypid) && is_numeric($id)) {213            //get pp form214            $match = array('wr_form_id' => 1);215            $wr_forms = $this->common_model->get_records(WR_FORM, array("form_json_data"), '', '', $match);216            if (!empty($wr_forms)) {217                $data['form_data'] = json_decode($wr_forms[0]['form_json_data'], TRUE);218                foreach ($data['form_data'] as $form_data) {219                    if(!empty($form_data['name'])){220                             $form_field[] = $form_data['name'];221                    }222                }223           }224           $data['form_field_data_name'] = $form_field;225            //get YP information226            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");227            $data['YP_details'] = YpDetails($ypid,$fields);228            if (empty($data['YP_details'])) {229                $msg = $this->lang->line('common_no_record_found');230                $this->session->set_flashdata('errormsg', $msg);231                redirect('YoungPerson');232            }233            //get pp yp data234            235            $match = array('yp_id' => $ypid, 'weekly_report_id' => $id);236            $data['edit_data'] = $this->common_model->get_records(WEEKLY_REPORT, array("*"), '', '', $match);237            // signoff data238            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];239            $table = WEEKLY_REPORT_SIGNOFF . ' as wr';240            $where = array("l.is_delete" => "0", "wr.yp_id" => $ypid);241            $fields = array("wr.created_by,wr.yp_id,CONCAT(`firstname`,' ', `lastname`) as name");242            $join_tables = array(LOGIN . ' as l' => 'l.login_id=wr.created_by');243            $group_by = array('created_by');244            $data['signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', $group_by, $where);245            $data['url'] = base_url("Filemanager/index/$ypid/?dir=uploads/filemanager/Project0" . $ypid . "/&modal=true");246            $data['drag'] = true;247            $url_data = base_url('WeeklyReport/edit/' . $id . '/' . $ypid);248            $match = array('url_data' => $url_data);249            $data['check_edit_permission'] = $this->common_model->get_records(CHECK_EDIT_URL, '*', '', '', $match);250            if (count($data['check_edit_permission']) > 0) {251                $in_time = date('Y-m-d h:i:s', strtotime($data['check_edit_permission'][0]['datetime']));252                $currnt_time = date('Y-m-d h:i:s');253                if (strtotime($in_time) > strtotime($currnt_time)) {254                    $now = strtotime($in_time) - strtotime($currnt_time);255                } else {256                    $now = strtotime($currnt_time) - strtotime($in_time);257                }258                //  die;259                $secs = floor($now % 60);260                if ($secs >= 10) {261                    $data['ypid'] = $ypid;262                    $data['footerJs'][0] = base_url('uploads/custom/js/wr/wr.js');263                    $data['crnt_view'] = $this->viewname;264                    $data['main_content'] = '/edit';265                    $data['header'] = array('menu_module' => 'YoungPerson');266                    $this->parser->parse('layouts/DefaultTemplate', $data);267                } else {268                    $msg = $this->lang->line('check_wr_user_update_data');269                    $this->session->set_flashdata('errormsg', $msg);270                    redirect('/' . $this->viewname . '/index/' . $ypid);271                }272            } else {273                $data['ypid'] = $ypid;274                $data['footerJs'][0] = base_url('uploads/custom/js/wr/wr.js');275                $data['crnt_view'] = $this->viewname;276                $data['main_content'] = '/edit';277                $data['header'] = array('menu_module' => 'YoungPerson');278                $this->parser->parse('layouts/DefaultTemplate', $data);279            }280        } else {281            show_404();282        }283    }284    /*285      @Author : Ritesh Rana286      @Desc   : view wr form287      @Input    :288      @Output   :289      @Date   : 19/03/2018290     */291    public function view($wr_id, $yp_id,$care_home_id=0,$past_care_id=0) {292        if (is_numeric($wr_id) && is_numeric($yp_id)) { 293            //get ks form294            $match = array('wr_form_id' => 1);295            $wr_forms = $this->common_model->get_records(WR_FORM, '', '', '', $match);296            if (!empty($wr_forms)) {297                $data['form_data'] = json_decode($wr_forms[0]['form_json_data'], TRUE);298            }299            300            //get YP information301             $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");302             $data['YP_details'] = YpDetails($yp_id,$fields);303            //get ks yp data304            $match = array('weekly_report_id' => $wr_id);305            $data['edit_data'] = $this->common_model->get_records(WEEKLY_REPORT, array("*"), '', '', $match);306            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];307            $table = WEEKLY_REPORT_SIGNOFF . ' as wr';308            $where = array("l.is_delete" => "0", "wr.yp_id" => $yp_id, "wr.weekly_report_id" => $wr_id, "wr.is_delete" => "0");309            $fields = array("wr.created_by,wr.created_date,wr.yp_id,wr.weekly_report_id, CONCAT(`firstname`,' ', `lastname`) as name");310            $join_tables = array(LOGIN . ' as l' => 'l.login_id=wr.created_by');311            $group_by = array('created_by');312            $data['wr_signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', $group_by, $where);313            $table = WEEKLY_REPORT_SIGNOFF . ' as wr';314            $where = array("wr.yp_id" => $yp_id, "wr.created_by" => $login_user_id, "wr.is_delete" => "0", "wr.weekly_report_id" => $wr_id);315            $fields = array("wr.*");316            $data['check_wr_signoff_data'] = $this->common_model->get_records($table, $fields, '', '', '', '', '', '', '', '', '', $where);317            //check data exist or not318            if (empty($data['YP_details']) || empty($data['edit_data'])) {319                $msg = $this->lang->line('common_no_record_found');320                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");321                redirect('YoungPerson');322            }323            324            $table_ap = MEDICAL_PROFESSIONALS_APPOINTMENT . ' as mc';325            $where_ap = array("mc.yp_id" => $yp_id,"mc.is_delete"=>0,"mc.appointment_date >=" =>$data['edit_data'][0]['start_date'],"mc.appointment_date <=" =>$data['edit_data'][0]['end_date']);326                $fields_ap = array("mc.*,concat(if(mp.title != '',mp.title,''),' ',if(mp.first_name != '',mp.first_name,''),' ',if(mp.surname != '',mp.surname,''),' - ',if(mp.professional != '',mp.professional,'')) as mp_name, concat(mp.house_namenumber,',',mp.street,' ',mp.town,',',mp.city,',',mp.postcode) as address");327            $join_tables_ap = array(MEDICAL_PROFESSIONALS . ' as mp' => 'mc.mp_id= mp.mp_id',YP_DETAILS . ' as yp' => 'mc.yp_id= yp.yp_id');328            $data['appointments'] = $this->common_model->get_records($table_ap, $fields_ap, $join_tables_ap, 'left', $where_ap, '', '', '', 'appointment_id', 'desc', '');329             $table = MD_COMMENTS . ' as com';330              $where = array("com.yp_id" => $yp_id);331              $fields = array("com.md_comment,com.created_date,com.md_appoint_id,CONCAT(l.firstname,' ', l.lastname) as create_name,CONCAT(yp.yp_fname,' ', yp.yp_lname) as yp_name");332              $join_tables = array(LOGIN . ' as l' => 'l.login_id= com.created_by', YP_DETAILS . ' as yp' => 'yp.yp_id= com.yp_id');333              $data['appointment_view_comments'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', '', $where);334              335            $table = WR_REPORT_SENT . ' AS wr';336            $fields = array('wr.*');337            $where = array('wr.weekly_report_id' => $wr_id, 'wr.yp_id' => $yp_id);338            $data['check_external_signoff_data'] = $this->common_model->get_records($table, $fields, '', '', '', '', '', '', '', '', '', $where);339            340            $data['ypid'] = $yp_id;341            $data['care_home_id'] = $care_home_id;342            $data['past_care_id'] = $past_care_id;343            $data['weekly_report_id'] = $wr_id;344            $data['footerJs'][0] = base_url('uploads/custom/js/wr/wr.js');345            $data['crnt_view'] = $this->viewname;346            $data['header'] = array('menu_module' => 'YoungPerson');347            $data['main_content'] = '/view';348            $this->parser->parse('layouts/DefaultTemplate', $data);349        } else {350            show_404();351        }352    }353    /*354      @Author : Ritesh rana355      @Desc   : Create Weekly report356      @Input 	: 357      @Output	:358      @Date   : 19/03/2018359     */360    public function create($id) {361      if(is_numeric($id))362      {363       //get ks form364       $match = array('wr_form_id'=> 1);365       $wr_forms = $this->common_model->get_records(WR_FORM,array("form_json_data"), '', '', $match);366       $form_field = array();367       if(!empty($wr_forms))368       {369            $data['form_data'] = json_decode($wr_forms[0]['form_json_data'], TRUE);370            foreach ($data['form_data'] as $form_data) {371                if(!empty($form_data['name'])){372                         $form_field[] = $form_data['name'];373                }374            }375       }376       $data['form_field_data_name'] = $form_field;377       378       //get YP information379        $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");380        $data['YP_details'] = YpDetails($id,$fields);381        if(empty($data['YP_details']))382        {383            $msg = $this->lang->line('common_no_record_found');384            $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");385            redirect('YoungPerson');386        }387        $data['url'] = base_url("Filemanager/index/$id/?dir=uploads/filemanager/Project0" . $id . "/&modal=true");388        $data['ypid'] = $id;389        $data['care_home_id'] = $data['YP_details'][0]['care_home'];390        $data['drag'] = true;391        $data['footerJs'][0] = base_url('uploads/custom/js/wr/wr.js');392        393        $data['header'] = array('menu_module' => 'YoungPerson');394        $data['crnt_view'] = $this->viewname;395        $data['main_content'] = '/edit';396        $this->parser->parse('layouts/DefaultTemplate', $data);397      }398      else399      {400          show_404 ();401      }402    }403    /*404      @Author : Ritesh Rana405      @Desc   : insert Weekly report in db406      @Input 	: yp id, weekly_report_id(edit)407      @Output	:408      @Date   : 20/03/2018409     */410    public function insert() {411        $postData = $this->input->post();412		$draftdata = (isset($postData['saveAsDraft'])) ? $postData['saveAsDraft'] : 0;413		if($this->input->is_ajax_request()){414			$draftdata=1;415		}416        //get pp form417        $match = array('wr_form_id' => 1);418        $wr_forms = $this->common_model->get_records(WR_FORM, array("form_json_data"), '', '', $match);419        if (!empty($wr_forms)) {420            $wr_form_data = json_decode($wr_forms[0]['form_json_data'], TRUE);421            $data = array();422            foreach ($wr_form_data as $row) {423                if (isset($row['name'])) {424                    if ($row['type'] == 'file') {425                        $filename = $row['name'];426                        //get image previous image427                        $match = array('yp_id' => $postData['yp_id'], 'weekly_report_id' => $postData['weekly_report_id']);428                        $pp_yp_data = $this->common_model->get_records(WEEKLY_REPORT, array('`' . $row['name'] . '`'), '', '', $match);429                    if ($this->input->post('gallery_path')) {430                            $gallery_path = $this->input->post('gallery_path');431                            $est_files = $this->input->post('gallery_files');432                            if (count($gallery_path) > 0) {433                                for ($i = 0; $i < count($gallery_path); $i++) {434                                    $data[$row['name']] =  $gallery_path[$i].''.$est_files[$i];435                                }436                            }437                        } else {438                            $data[$row['name']] = !empty($pp_yp_data[0][$filename]) ? $pp_yp_data[0][$filename] : '';439                        }440                    } else {441                        if ($row['type'] != 'button') {442                            if ($row['type'] == 'date') {443                                $data[$row['name']] = dateformat($postData[$row['name']]);444                            } elseif ($row['subtype'] == 'time') {445                                $data[$row['name']] = dbtimeformat($postData[$row['name']]);446                            } else if ($row['type'] == 'checkbox-group') {447                                $data[$row['name']] = !empty($postData[$row['name']]) ? implode(',', $postData[$row['name']]) : '';448                            } elseif ($row['type'] == 'textarea' && $row['subtype'] == 'tinymce') {449                                $data[$row['name']] = strip_slashes($postData[$row['name']]);450                            } else {451                                $data[$row['name']] = strip_tags(strip_slashes($postData[$row['name']]));452                            }453                        }454                    }455                }456            }457        }458        if(!empty($postData['weekly_report_id']))459        {460             $data['draft'] = $draftdata; 461             $data['start_date'] = dateformat($postData['start_date']);462             $data['end_date'] = dateformat($postData['end_date']);463             $data['weekly_report_id'] = $postData['weekly_report_id'];464             $data['yp_id'] = $postData['yp_id'];465             $data['modified_date'] = datetimeformat();466             $data['modified_by'] = $this->session->userdata['LOGGED_IN']['ID'];467            468             $where=array('weekly_report_id'=>$postData['weekly_report_id']);469             $this->common_model->update(WEEKLY_REPORT,$data,$where);470            471             //Insert log activity472               $activity = array(473                'user_id'             => $this->session->userdata['LOGGED_IN']['ID'],474                'yp_id'               => !empty($postData['yp_id'])?$postData['yp_id']:'',475                'module_name'         => WR_MODULE,476                'module_field_name'   => '',477                'type'                => 2478              );479              log_activity($activity);480        }481		482        else483        {484            if(!empty($data))485            {486               $data['draft'] = $draftdata; 487               $data['yp_id'] = $postData['yp_id'];488               $data['care_home_id'] = $postData['care_home_id'];489               $data['start_date'] = dateformat($postData['start_date']);490               $data['end_date'] = dateformat($postData['end_date']);491               $data['created_date'] = datetimeformat();492               $data['created_by'] = $this->session->userdata['LOGGED_IN']['ID'];493               $this->common_model->insert(WEEKLY_REPORT, $data);494               $data['weekly_report_id'] = $this->db->insert_id();495               //Insert log activity496               $activity = array(497                'user_id'             => $this->session->userdata['LOGGED_IN']['ID'],498                'yp_id'               => !empty($postData['yp_id'])?$postData['yp_id']:'',499                'module_name'         => WR_MODULE,500                'module_field_name'   => '',501                'type'                => 1502              );503              log_activity($activity);504            }505             506        }507        if(!empty($data))508        {509          redirect('/' . $this->viewname .'/save_weekly_report/'. $data['weekly_report_id'].'/'.$data['yp_id']);510        }511        else512        {513          $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>Please  insert weekly report details.</div>");514          redirect('/' . $this->viewname .'/create/'.$postData['yp_id']);515        }516        /*===============*/517    }518    /*519      @Author : Ritesh Rana520      @Desc   : save weekly report521      @Input 	: yp id, weekly_report_id(edit)522      @Output	:523      @Date   : 21/03/2018524     */525    public function save_weekly_report($id, $ypid) {526        if (is_numeric($id) && is_numeric($ypid)) {527            //get YP information528            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");529            $data['YP_details'] = YpDetails($ypid,$fields);530            if (empty($data['YP_details'])) {531                $msg = $this->lang->line('common_no_record_found');532                $this->session->set_flashdata('errormsg', $msg);533                redirect('YoungPerson');534            }535            $data['id'] = $ypid;536            $data['main_content'] = '/save_weekly_report';537            $this->parser->parse('layouts/DefaultTemplate', $data);538        } else {539            show_404();540        }541    }542/*543      @Author : Ritesh Rana544      @Desc   : download weekly report pdf545      @Input 	: yp id, weekly_report_id(edit)546      @Output	:547      @Date   : 20/03/2018548     */549    public function DownloadPDF($weekly_report_id, $yp_id, $section = NULL) {550        $data = [];551        $match = array('wr_form_id' => 1);552        $wr_forms = $this->common_model->get_records(WR_FORM, array("form_json_data"), '', '', $match);553        if (!empty($wr_forms)) {554            $data['wr_form_data'] = json_decode($wr_forms[0]['form_json_data'], TRUE);555        }556        557        //get YP information558        $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");559        $data['YP_details'] = YpDetails($yp_id,$fields);560        //get RA yp data561        $match = array('yp_id' => $yp_id, 'weekly_report_id' => $weekly_report_id);562        $data['edit_data'] = $this->common_model->get_records(WEEKLY_REPORT, '', '', '', $match);563        $data['ypid'] = $yp_id;564		565		//get medical appoinyment data566		 $table_ap = MEDICAL_PROFESSIONALS_APPOINTMENT . ' as mc';567            $where_ap = array("mc.yp_id" => $yp_id,"mc.is_delete"=>0,"mc.appointment_date >=" =>$data['edit_data'][0]['start_date'],"mc.appointment_date <=" =>$data['edit_data'][0]['end_date']);568                $fields_ap = array("mc.appointment_date,mc.comments,concat(if(mp.title != '',mp.title,''),' ',if(mp.first_name != '',mp.first_name,''),' ',if(mp.surname != '',mp.surname,''),' - ',if(mp.professional != '',mp.professional,'')) as mp_name, concat(mp.house_namenumber,',',mp.street,' ',mp.town,',',mp.city,',',mp.postcode) as address");569            $join_tables_ap = array(MEDICAL_PROFESSIONALS . ' as mp' => 'mc.mp_id= mp.mp_id',YP_DETAILS . ' as yp' => 'mc.yp_id= yp.yp_id');570            $data['appointments'] = $this->common_model->get_records($table_ap, $fields_ap, $join_tables_ap, 'left', $where_ap, '', '', '', 'appointment_id', 'desc', '');571		    //get medical appoinyment comments data572            $table = MD_COMMENTS . ' as com';573              $where = array("com.yp_id" => $yp_id);574              $fields = array("com.md_appoint_id,com.md_comment,com.created_date,CONCAT(l.firstname,' ', l.lastname) as create_name,CONCAT(yp.yp_fname,' ', yp.yp_lname) as yp_name");575              $join_tables = array(LOGIN . ' as l' => 'l.login_id= com.created_by', YP_DETAILS . ' as yp' => 'yp.yp_id= com.yp_id');576              $data['appointment_view_comments'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', '', '', '', $where);577        $table = WR_REPORT_SENT . ' as wr';578        $match_social = array('wr.yp_id'=> $yp_id,'wr.weekly_report_id' => $weekly_report_id);579        $social_where_in = array("wr.user_type" => ['Social_worker', 'Social_data']);580        $match_parent = array('wr.yp_id'=> $yp_id,'wr.weekly_report_id' => $weekly_report_id);581        $parent_where_in = array("wr.user_type" => ['Parent', 'Parent_data']);582        $match_other = array('wr.yp_id'=> $yp_id,'wr.weekly_report_id' => $weekly_report_id,"wr.user_type" => "Other");583        $fields = array("wr.*,CONCAT(wr.fname,' ', wr.lname) as staff_name");584        $data['social_worker_signoff'] = $this->common_model->get_records($table, $fields, '', '', $match_social,'','','','','','','','',$social_where_in);585        $data['parent_signoff'] = $this->common_model->get_records($table, $fields, '', '', $match_parent,'','','','','','','','',$parent_where_in);586        $data['social_worker_signoff'] = $this->common_model->get_records($table, $fields, '', '', $match_social,'','','','','','','','',$social_where_in);587        $data['other_signoff'] = $this->common_model->get_records($table, $fields, '', '', $match_other);588 589        $data['main_content'] = '/wrpdf';590        $data['section'] = $section;591        $html = $this->parser->parse('layouts/PDFTemplate', $data);592        $pdfFileName = "weekly_report" . $weekly_report_id . ".pdf";593        $pdfFilePath = FCPATH . 'uploads/weeklyreport/';594        if (!is_dir(FCPATH . 'uploads/weeklyreport/')) {595            @mkdir(FCPATH . 'uploads/weeklyreport/', 0777, TRUE);596        }597        if (file_exists($pdfFilePath . $pdfFileName)) {598            unlink($pdfFilePath . $pdfFileName);599        }600        601        $this->load->library('m_pdf');602        $PDFInformation['yp_details'] = $data['YP_details'][0];603        604        $PDFInformation['edit_data'] = $data['edit_data'];605        606        $PDFHeaderHTML = $this->load->view('wrpdfHeader', $PDFInformation, true);607        $PDFFooterHTML = $this->load->view('wrpdfFooter', $PDFInformation, true);608        //Set Header Footer and Content For PDF609        $this->m_pdf->pdf->mPDF('utf-8','A4','','','15','15','57','25');610        $this->m_pdf->pdf->SetHTMLHeader($PDFHeaderHTML, 'O');611        $data['main_content'] = '/wrpdf';612        $html = $this->parser->parse('layouts/PdfDataTemplate', $data);613           /*remove*/614        $this->m_pdf->pdf->WriteHTML($html);615        //Store PDF in individual_strategies Folder616                617        if(!empty($section) && $section == 'download'){618            $this->m_pdf->pdf->Output($pdfFileName, "D");619        } else {620            if (!is_dir($this->config->item('wr_pdf_base_path'))) {621                mkdir($this->config->item('wr_pdf_base_path'), 0777, TRUE);622            }623            $pdfFileSavePath = $this->config->item('wr_pdf_base_path') . $pdfFileName;624            $this->m_pdf->pdf->Output($pdfFileSavePath, "F");625            return $pdfFileSavePath;626        }627    }628    /*629      @Author : Ritesh Rana630      @Desc   : signoff631      @Input 	: yp id, weekly_report_id(edit)632      @Output	:633      @Date   : 20/03/2018634     */635    public function manager_review($yp_id, $weekly_report_id) {636        if (!empty($yp_id)) {637            //get YP information638            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");639            $YP_details = YpDetails($yp_id,$fields);640            $login_user_id = $this->session->userdata['LOGGED_IN']['ID'];641            $match = array('yp_id' => $yp_id, 'created_by' => $login_user_id, 'is_delete' => '0', 'weekly_report_id' => $weekly_report_id);642            $check_signoff_data = $this->common_model->get_records(WEEKLY_REPORT_SIGNOFF, array("*"), '', '', $match);643            if (empty($check_signoff_data) > 0) {644                $update_pre_data['care_home_id'] = $YP_details[0]['care_home'];645                $update_pre_data['yp_id'] = $yp_id;646                $update_pre_data['weekly_report_id'] = $weekly_report_id;647                $update_pre_data['created_date'] = datetimeformat();648                $update_pre_data['created_by'] = $this->session->userdata('LOGGED_IN')['ID'];649                if ($this->common_model->insert(WEEKLY_REPORT_SIGNOFF, $update_pre_data)) {650                    $u_data['signoff'] = '1';651                    $this->common_model->update(WEEKLY_REPORT, $u_data, array('weekly_report_id' => $weekly_report_id, 'yp_id' => $yp_id));652                    $msg = $this->lang->line('successfully_wr_review');653                    $this->session->set_flashdata('successmsg', $msg);654                } else {655                    // error656                    $msg = $this->lang->line('error_msg');657                    $this->session->set_flashdata('errormsg', $msg);658                }659            } else {660                $msg = $this->lang->line('already_wr_review');661                $this->session->set_flashdata('errormsg', $msg);662            }663        } else {664            $msg = $this->lang->line('error_msg');665            $this->session->set_flashdata('errormsg', $msg);666        }667        redirect('/' . $this->viewname . '/index/' . $yp_id);668    }669/*670      @Author : Rtiesh Rana671      @Desc   : update slug672      @Input 	: 673      @Output	:674      @Date   : 20/03/2018675     */676    public function update_slug() {677        $postData = $this->input->post();678        $where = array('url_data' => $postData['url_data']);679        $this->common_model->delete(CHECK_EDIT_URL, $where);680        $update_pre_data['datetime'] = date('Y-m-d H:i:s');681        $update_pre_data['url_data'] = $postData['url_data'];682        $this->common_model->insert(CHECK_EDIT_URL, $update_pre_data);683        return TRUE;684        685    }686/*687      @Author : Ritesh Rana688      @Desc   : send weekly report to support worker689      @Input 	: yp id, weekly_report_id(edit)690      @Output	:691      @Date   : 22/03/2018692     */693    public function send_report($yp_id, $weekly_report_id, $checkSocialWorker = NULL) {694        695            696            $this->formValidation();697            698            if ($this->form_validation->run() == FALSE) {699                $data['crnt_view'] = $this->viewname;700                //get YP information701            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");702            $YP_details = YpDetails($yp_id,$fields);703                $data['care_home_id'] = $YP_details[0]['care_home']; 704                $data['ypid'] = $yp_id;705                $data['weekly_report_id'] = $weekly_report_id;706                $data['form_action_path'] = $this->viewname . '/send_report/' . $weekly_report_id . '/' . $yp_id;707                $data['header'] = array('menu_module' => 'YoungPerson');708               709                $table = PARENT_CARER_INFORMATION;710                $match = array("yp_id" => $yp_id,'is_deleted' => 0);711                $fields = array("parent_carer_id,firstname,surname");712                $data['parentRecord'] = $this->common_model->get_records($table, $fields, '', '', $match);713                714                $table = SOCIAL_WORKER_DETAILS;715                $match = "yp_id = " . $yp_id;716                $fields = array("social_worker_id,social_worker_firstname,social_worker_surname");717                $data['socialWorkerRecord'] = $this->common_model->get_records($table, $fields, '', 'left', $match);718                719                $data['validation'] = validation_errors();720                if (!empty($data['validation'])) {721                    $data['main_content'] = '/signoff';722                    $this->parser->parse('layouts/DefaultTemplate', $data);723                } else {724                    $this->load->view('/signoff', $data);725                }726            } else { 727                $this->insertdata();728            }729    }730/*731      @Author : Ritesh Rana732      @Desc   : insert data of sent weekly report733      @Input 	: yp id, weekly_report_id(edit)734      @Output	:735      @Date   : 22/03/2018736     */737    public function insertdata($social_worker = array(), $yp_id = '', $weekly_report_id = '') {738        $postdata = $this->input->post();739        //pr($postdata);exit;740        $ypid = !empty($yp_id) ? $yp_id : $postdata['ypid'];741        $pp_id = !empty($weekly_report_id) ? $weekly_report_id : $postdata['weekly_report_id'];742        $user_type = $postdata['user_type'];743        if ($user_type == 'parent') {744              $parent_data['firstname'] = strip_tags($postdata['fname']);745              $parent_data['surname'] = strip_tags($postdata['lname']);746              $parent_data['relationship'] = strip_tags($postdata['relationship']);747              $parent_data['address'] = strip_tags($postdata['address']);748              $parent_data['contact_number'] = strip_tags($postdata['contact_number']);749              $parent_data['email_address'] = strip_tags($postdata['email']);750              $parent_data['yp_authorised_communication'] = strip_tags($postdata['yp_authorised_communication']);751              $parent_data['carer_authorised_communication'] = strip_tags($postdata['carer_authorised_communication']);752              $parent_data['yp_authorised_communication'] = strip_tags($postdata['yp_authorised_communication']);753              $parent_data['comments'] = strip_tags($postdata['comments']);754              $parent_data['created_date'] = datetimeformat();755              $parent_data['created_by'] = $this->session->userdata['LOGGED_IN']['ID'];756              $parent_data['yp_id'] = $this->input->post('ypid');757              $parent_data['care_home_id'] = $this->input->post('care_home_id');758              $success = $this->common_model->insert(PARENT_CARER_INFORMATION, $parent_data);759              //Insert log activity760              $activity = array(761                  'user_id' => $this->session->userdata['LOGGED_IN']['ID'],762                  'yp_id' => !empty($postdata['ypid']) ? $postdata['ypid'] : '',763                  'module_name' => WR_PARENT_CARER_DETAILS_YP,764                  'module_field_name' => '',765                  'type' => 1766              );767            log_activity($activity);768        }769        $table = YP_DETAILS . ' as yp';770        $match = "yp.is_deleted= '0' AND yp.yp_id = '" . $ypid . "'";771        $fields = array("yp.yp_id,yp.status,yp.yp_fname,yp.yp_lname");772        $duplicateEmail = $this->common_model->get_records($table, $fields, '', '', $match);773        //Current Login detail774        $main_user_data = $this->session->userdata('LOGGED_IN');775        if(empty($social_worker)){776            if (!validateFormSecret()) {777                $this->session->set_flashdata('errormsg', lang('error'));778                redirect('Dashboard'); //Redirect On Listing page779            }780        }781        $data['crnt_view'] = $this->viewname;782        if(!empty($social_worker)){783            $fname = $social_worker[0]['social_worker_firstname'];784            $lname = $social_worker[0]['social_worker_surname'];			785            $email = $social_worker[0]['email'];786        } else {787            $fname = $postdata['fname'];788            $lname = $postdata['lname'];789            $email = $postdata['email'];790        }791		$fullname = $fname. " " .$lname;792        $data = array(793            'care_home_id' => $postdata['care_home_id'],794            'yp_id' => ucfirst($ypid),795            'weekly_report_id' => ucfirst($pp_id),796            'fname' => ucfirst($fname),797            'lname' => ucfirst($lname),798            'user_type' => ucfirst($postdata['user_type']),799            'email' => $email,800            'key_data' => md5($email),801            'created_date' => datetimeformat(),802            'modified_date' => datetimeformat(),803            'created_by' => $main_user_data['ID'],804            'updated_by' => $main_user_data['ID'],805        );806        //Insert Record in Database807        if ($this->common_model->insert(WR_REPORT_SENT, $data)) {808            $signoff_id = $this->db->insert_id();809            $savePdfPath = $this->DownloadPDF($pp_id,$ypid); // send mail810            811            $this->sendMailToRelation($data, $savePdfPath, $fullname, $duplicateEmail); // send mail812            //Insert log activity813            $activity = array(814                'user_id' => $this->session->userdata['LOGGED_IN']['ID'],815                'yp_id' => !empty($ypid) ? $ypid : '',816                'module_name' => WR_MODULE,817                'module_field_name' => '',818                'type' => 1819            );820            log_activity($activity);821            $msg = $this->lang->line('wr_report_sent_msg');822            $this->session->set_flashdata('successmsg', $msg);823        } else {824            // error825            $msg = $this->lang->line('error_msg');826            $this->session->set_flashdata('errormsg', $msg);827        }828        redirect('WeeklyReport/index/' . $ypid);829    }830    /*831      @Author : Ritesh Rana832      @Desc   : send email to support worker833      @Input 	: email data834      @Output	:835      @Date   : 24/03/2018836     */837    private function sendMailToRelation($data = array(), $pdfPath = '', $fullname = '', $yp_data) {838        if (!empty($data) && !empty($pdfPath)) {839            $getEmailTemplateData = $this->common_model->get_records(EMAIL_TEMPLATE_MASTER, array('*'), '', '', ['template_id' => '2']);840            if (!empty($getEmailTemplateData)) {841                $subject = $getEmailTemplateData[0]['subject'];842                $emailBody = $getEmailTemplateData[0]['body'];843                $finalSubject = str_replace('{SITE_NAME}', SITE_NAME, $subject);844                $finalEmailBody = str_replace(array('{USERNAME}','{YP_NAME}'), array($fullname, $yp_data[0]['yp_fname'] . " " . $yp_data[0]['yp_lname']), $emailBody);845                // End body846                $this->common_model->sendEmail($data['email'], $finalSubject, $finalEmailBody, FROM_EMAIL_ID, '', '', '', $pdfPath);847            }848            unlink($pdfPath);       849        }850        return true;851    }852/*853      @Author : Ritesh Rana854      @Desc   : form validation rules855      @Input 	: 856      @Output	:857      @Date   : 24/03/2018858     */859    public function formValidation($id = null) {860        $this->form_validation->set_rules('fname', 'Firstname', 'trim|required|min_length[2]|max_length[100]|xss_clean');861        $this->form_validation->set_rules('lname', 'Lastname', 'trim|required|min_length[2]|max_length[100]|xss_clean');862        $this->form_validation->set_rules('email', 'Email', 'trim|required|xss_clean');863    }864    /*865      @Author : Ritesh Rana866      @Desc   : delete weekly report867      @Input 	: yp_id, weekly report id868      @Output	:869      @Date   : 26/03/2018870     */871    public function deletedata($id, $ypid){872        if(is_numeric($id) && is_numeric($ypid))873        {874           $match = array('weekly_report_id'=> $id);875           $wr_data = $this->common_model->get_records(WEEKLY_REPORT,array("*"), '', '', $match);876           if(!empty($wr_data))877           {878                $update_arr = array(879                    'is_delete'=> 1880                );881                $where = array('weekly_report_id'=>$id);882                $this->common_model->update(WEEKLY_REPORT, $update_arr,$where);883                //Insert log activity884                $activity = array(885                'user_id'             => $this->session->userdata['LOGGED_IN']['ID'],886                'module_name'         => WR_MODULE,887                'module_field_name'   => '',888                'yp_id'   => $ypid,889                'type'                => 3890                );891                log_activity($activity);892                redirect('/WeeklyReport/index/'. $ypid);893           }894           else895           {896                $this->session->set_flashdata('msg', "<div class='alert alert-success text-center'>No data to delete.</div>");897                redirect('/WeeklyReport/index/'. $ypid);898           }899        }900        else901        {902            show_404 ();903        }904    }905    /*906      @Author : Ritesh Rana907      @Desc   : get social worker detial908      @Input 	: yp_id, user type909      @Output	:910      @Date   : 04/04/2018911     */912    public function getStaffData(){913        $user_type = !empty($this->input->post("user_type"))?$this->input->post("user_type"):''; 914        $yp_id = $this->input->post("yp_id");915        $id = $this->input->post('id'); 916        $table = YP_DETAILS . ' as yp';917        $match = "yp.yp_id = " . $yp_id;918        $fields = array("yp.*,swd.social_worker_firstname,swd.social_worker_surname,swd.landline,swd.mobile,swd.email,swd.senior_social_worker_firstname,swd.senior_social_worker_surname,swd.other,pc.parent_carer_id,pc.firstname,pc.surname,pc.relationship,pc.address,pc.contact_number,pc.email_address,pc.yp_authorised_communication,pc.carer_authorised_communication,pc.comments");919        $join_tables = array(SOCIAL_WORKER_DETAILS . ' as swd' => 'swd.yp_id= yp.yp_id', PARENT_CARER_INFORMATION . ' as pc' => 'pc.yp_id= yp.yp_id');920        $data['editRecord'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', $match);921        if($user_type == 'parent_data'){922            $table = PARENT_CARER_INFORMATION . ' as pc';923            $match = array("pc.parent_carer_id" => $id,'pc.is_deleted' => 0);924            $fields = array("pc.*");925            $data['parent_data'] = $this->common_model->get_records($table, $fields, '', '', $match);926            $data['editRecord'][0]['fname'] = $data['editRecord'][0]['firstname'];927            $data['editRecord'][0]['lname'] = $data['editRecord'][0]['surname'];928            $data['editRecord'][0]['email_id'] = $data['editRecord'][0]['email_address'];929            930        } else if($user_type == 'social_data'){931            $table = SOCIAL_WORKER_DETAILS . ' as sw';932            $match = array("sw.social_worker_id" => $id);933            $fields = array("sw.*");934            $data['social_worker_data'] = $this->common_model->get_records($table, $fields, '', '', $match);935            $data['editRecord'][0]['fname'] = $data['editRecord'][0]['social_worker_firstname'];936            $data['editRecord'][0]['lname'] = $data['editRecord'][0]['social_worker_surname'];937            $data['editRecord'][0]['email_id'] = $data['editRecord'][0]['email'];938        }939        $data['user_type'] = $user_type;940        $this->load->view($this->viewname . '/signoff_ajax', $data);941    }942    /*943      @Author : Ritesh Rana944      @Desc   : get list of external approver945      @Input 	: yp_id, wr_id946      @Output	:947      @Date   : 12/04/2018948     */949    public function reportReviewedBy($wr_id, $yp_id,$care_home_id=0,$past_care_id=0) {950 /*951                Ritesh Rana952                for past care id inserted for archive full functionality953                */954        if ($past_care_id !== 0) {955            $temp = $this->common_model->get_records(PAST_CARE_HOME_INFO, array('move_date'), '', '', array("yp_id" => $yp_id, "past_carehome" => $care_home_id));956            $data_care_home_detail = $this->common_model->get_records(PAST_CARE_HOME_INFO, array("enter_date,move_date"), '', '', array("yp_id" => $yp_id, "move_date <= " => $temp[0]['move_date']));957            $created_date = $movedate = '';958            $count_care = count($data_care_home_detail);959            if ($count_care >= 1) {960                $created_date = $data_care_home_detail[0]['enter_date'];961                $movedate = $data_care_home_detail[$count_care - 1]['move_date'];962            } elseif ($count_care == 0) {963                $created_date = $data_care_home_detail[0]['enter_date'];964                $movedate = $data_care_home_detail[0]['move_date'];965            }966        }967        if (is_numeric($wr_id) && is_numeric($yp_id)) { 968            969            //get YP information970            $fields = array("care_home,yp_fname,yp_lname,date_of_birth,yp_id");971            $data['YP_details'] = YpDetails($yp_id,$fields);972            $searchtext = $perpage = '';973            $searchtext = $this->input->post('searchtext');974            $sortfield = $this->input->post('sortfield');975            $sortby = $this->input->post('sortby');976            $perpage = RECORD_PER_PAGE;977            $allflag = $this->input->post('allflag');978            if (!empty($allflag) && ($allflag == 'all' || $allflag == 'changesorting' || $allflag == 'changesearch')) {979                $this->session->unset_userdata('wr_data');980            }981            $searchsort_session = $this->session->userdata('wr_data');982            //Sorting983            if (!empty($sortfield) && !empty($sortby)) {984                $data['sortfield'] = $sortfield;985                $data['sortby'] = $sortby;986            } else {987                if (!empty($searchsort_session['sortfield'])) {988                    $data['sortfield'] = $searchsort_session['sortfield'];989                    $data['sortby'] = $searchsort_session['sortby'];990                    $sortfield = $searchsort_session['sortfield'];991                    $sortby = $searchsort_session['sortby'];992                } else {993                    $sortfield = 'wr.created_date';994                    $sortby = 'desc';995                    $data['sortfield'] = $sortfield;996                    $data['sortby'] = $sortby;997                }998            }999            //Search text1000            if (!empty($searchtext)) {1001                $data['searchtext'] = $searchtext;1002            } else {1003                if (empty($allflag) && !empty($searchsort_session['searchtext'])) {1004                    $data['searchtext'] = $searchsort_session['searchtext'];1005                    $searchtext = $data['searchtext'];1006                } else {1007                    $data['searchtext'] = '';1008                }1009            }1010            if (!empty($perpage) && $perpage != 'null') {1011                $data['perpage'] = $perpage;1012                $config['per_page'] = $perpage;1013            } else {1014                if (!empty($searchsort_session['perpage'])) {1015                    $data['perpage'] = trim($searchsort_session['perpage']);1016                    $config['per_page'] = trim($searchsort_session['perpage']);1017                } else {1018                    $config['per_page'] = RECORD_PER_PAGE;1019                    $data['perpage'] = RECORD_PER_PAGE;1020                }1021            }1022            //pagination configuration1023            $config['first_link'] = 'First';1024            if($past_care_id == 0){1025                $config['base_url'] = base_url() . $this->viewname . '/reportReviewedBy/' . $yp_id . '/' . $wr_id;1026            if (!empty($allflag) && ($allflag == 'all' || $allflag == 'changesorting' || $allflag == 'changesearch')) {1027                $config['uri_segment'] = 0;1028                $uri_segment = 0;1029            } else {1030                $config['uri_segment'] = 5;1031                $uri_segment = $this->uri->segment(5);1032            }1033            $table = WR_REPORT_SENT . ' AS wr';1034            $fields = array('wr.user_type,wr.created_date,CONCAT(l.firstname," ", l.lastname) as sent_by, CONCAT(wr.fname," ", wr.lname) as review_by,ch.care_home_name');1035            $where = array('wr.weekly_report_id' => $wr_id, 'wr.yp_id' => $yp_id);1036            $join_tables = array(LOGIN . ' as l' => 'l.login_id=wr.created_by',CARE_HOME . ' as ch' => 'ch.care_home_id = wr.care_home_id');1037            1038            if (!empty($searchtext)) {1039                $searchtext = html_entity_decode(trim(addslashes($searchtext)));1040                $match = '';1041                $where_search = '((l.firstname LIKE "%' . $searchtext . '%" OR l.lastname LIKE "%' . $searchtext . '%" OR wr.fname LIKE "%' . $searchtext . '%" OR wr.lname LIKE "%' . $searchtext . '%" OR wr.created_date LIKE "%' . $searchtext . '%") AND l.is_delete = "0" AND wr.weekly_report_id = "'. $wr_id . '" AND wr.yp_id = "' .$yp_id .'")';1042                $data['wr_signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', $match, $config['per_page'], $uri_segment, $sortfield, $sortby, '', $where_search);1043                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', $match, '', '', $sortfield, $sortby, '', $where_search, '', '', '1');1044            } else {1045                $data['wr_signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', $config['per_page'], $uri_segment, $sortfield, $sortby, '', $where);1046                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', $sortfield, $sortby, '', $where, '', '', '1');1047            }1048            }else{1049             $config['base_url'] = base_url() . $this->viewname . '/reportReviewedBy/' . $yp_id . '/' . $wr_id.'/'.$care_home_id.'/'.$past_care_id;1050            if (!empty($allflag) && ($allflag == 'all' || $allflag == 'changesorting' || $allflag == 'changesearch')) {1051                $config['uri_segment'] = 0;1052                $uri_segment = 0;1053            } else {1054                $config['uri_segment'] = 7;1055                $uri_segment = $this->uri->segment(7);1056            }1057            1058            $table = WR_REPORT_SENT . ' AS wr';1059            $fields = array('wr.user_type,wr.created_date,wr.sent_by,CONCAT(l.firstname," ", l.lastname) as sent_by, CONCAT(wr.fname," ", wr.lname) as review_by,ch.care_home_name');1060            $where = array('wr.weekly_report_id' => $wr_id, 'wr.yp_id' => $yp_id);1061            $where_date = "wr.created_date BETWEEN  '".$created_date."' AND '".$movedate."'";1062            $join_tables = array(LOGIN . ' as l' => 'l.login_id=wr.created_by',CARE_HOME . ' as ch' => 'ch.care_home_id = wr.care_home_id');1063            1064            if (!empty($searchtext)) {1065                $searchtext = html_entity_decode(trim(addslashes($searchtext)));1066                $match = '';1067                $where_search = '((l.firstname LIKE "%' . $searchtext . '%" OR l.lastname LIKE "%' . $searchtext . '%" OR wr.fname LIKE "%' . $searchtext . '%" OR wr.lname LIKE "%' . $searchtext . '%" OR wr.created_date LIKE "%' . $searchtext . '%") AND l.is_delete = "0" AND wr.weekly_report_id = "'. $wr_id . '" AND wr.yp_id = "' .$yp_id .'")';1068                $data['wr_signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', $match, $config['per_page'], $uri_segment, $sortfield, $sortby, '', $where_search,'','','','','',$where_date);1069                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', $match, '', '', $sortfield, $sortby, '', $where_search, '', '', '1','','',$where_date);1070            } else {1071                $data['wr_signoff_data'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', $config['per_page'], $uri_segment, $sortfield, $sortby, '', $where,'','','','','',$where_date);1072                $config['total_rows'] = $this->common_model->get_records($table, $fields, $join_tables, 'left', '', '', '', '', $sortfield, $sortby, '', $where, '', '', '1','','',$where_date);1073            }   1074            }1075            $this->ajax_pagination->initialize($config);1076            $data['pagination'] = $this->ajax_pagination->create_links();1077            1078            $data['uri_segment'] = $uri_segment;1079            $sortsearchpage_data = array(1080                'sortfield' => $data['sortfield'],1081                'sortby' => $data['sortby'],1082                'searchtext' => $data['searchtext'],1083                'perpage' => trim($data['perpage']),1084                'uri_segment' => $uri_segment,1085                'total_rows' => $config['total_rows']);1086            1087            if (empty($data['YP_details'])) {1088                $msg = $this->lang->line('common_no_record_found');1089                $this->session->set_flashdata('msg', "<div class='alert alert-danger text-center'>$msg</div>");1090                redirect('YoungPerson');1091            }1092            $data['ypid'] = $yp_id;1093            $data['care_home_id'] = $care_home_id;1094            $data['past_care_id'] = $past_care_id;1095            $data['weekly_report_id'] = $wr_id;1096            $data['footerJs'][0] = base_url('uploads/custom/js/wr/wr.js');1097            $data['crnt_view'] = $this->viewname;1098            $data['header'] = array('menu_module' => 'YoungPerson');1099            if ($this->input->post('result_type') == 'ajax') {1100                $this->load->view($this->viewname . '/reviewed_ajaxlist', $data);1101            } else {1102                $data['main_content'] = '/reviewed_by';1103                $this->parser->parse('layouts/DefaultTemplate', $data);1104            }1105        } else {1106            show_404();1107        }1108    }1109    1110}...TokenMatcherTest.php
Source: TokenMatcherTest.php 
...210    }211    public function testItMatchesOtherPreservingIndent(): void212    {213        $token = $this->createTokenWithContents('  Arbitrary text');214        self::assertTrue($this->tokenMatcher->match_Other($token));215        self::assertSame(TokenType::Other, $token->match?->tokenType);216        self::assertSame('  Arbitrary text', $token->match?->text);217        self::assertSame(0, $token->match?->indent);218    }219    public function testItMatchesOtherWithIndentRemovedInsideDocstring(): void220    {221        $prevToken = $this->createTokenWithContents('    ```');222        $this->tokenMatcher->match_DocStringSeparator($prevToken);223        $token = $this->createTokenWithContents('   Arbitrary text');224        self::assertTrue($this->tokenMatcher->match_Other($token));225        self::assertSame(TokenType::Other, $token->match?->tokenType);226        self::assertSame('Arbitrary text', $token->match?->text);227        self::assertSame(0, $token->match?->indent);228    }229    public function testItUnescapesAlternativeDocstringSeparatorInsideDocstring(): void230    {231        $prevToken = $this->createTokenWithContents('    ```');232        $this->tokenMatcher->match_DocStringSeparator($prevToken);233        $token = $this->createTokenWithContents('    \\`\\`\\`');234        self::assertTrue($this->tokenMatcher->match_Other($token));235        self::assertSame(TokenType::Other, $token->match?->tokenType);236        self::assertSame('```', $token->match?->text);237        self::assertSame(0, $token->match?->indent);238    }239    public function testItUnescapesRegularDocstringSeparatorInsideDocstring(): void240    {241        $prevToken = $this->createTokenWithContents('    """');242        $this->tokenMatcher->match_DocStringSeparator($prevToken);243        $token = $this->createTokenWithContents('    \\"\\"\\"');244        self::assertTrue($this->tokenMatcher->match_Other($token));245        self::assertSame(TokenType::Other, $token->match?->tokenType);246        self::assertSame('"""', $token->match?->text);247        self::assertSame(0, $token->match?->indent);248    }249    public function testItDoesNotMatchTagsWhenLineDoesNotStartWithAt(): void250    {251        $token = $this->createNonMatchingToken();252        self::assertFalse($this->tokenMatcher->match_TagLine($token));253        self::assertNull($token->match);254    }255    public function testItMatchesTagLine(): void256    {257        $token = $this->createTokenWithContents('  @foo @bar');258        self::assertTrue($this->tokenMatcher->match_TagLine($token));...TokenMatcher.php
Source: TokenMatcher.php 
...81            }82        }83        return false;84    }85    public function match_Other(Token $token): bool86    {87        //take the entire line, except removing DocString indents88        $text = $token->line?->getLineText($this->indentToRemove) ?? '';89        $this->setTokenMatched($token, TokenType::Other, $this->unescapeDocString($text), indent: 0);90        return true;91    }92    public function match_Empty(Token $token): bool93    {94        if ($token->line?->isEmpty()) {95            $this->setTokenMatched($token, TokenType::Empty);96            return true;97        }98        return false;99    }...TokenMatcherInterface.php
Source: TokenMatcherInterface.php 
...22    public function match_StepLine(Token $token): bool;23    public function match_DocStringSeparator(Token $token): bool;24    public function match_TableRow(Token $token): bool;25    public function match_Language(Token $token): bool;26    public function match_Other(Token $token): bool;27    public function reset(): void;28}...match_Other
Using AI Code Generation
1$parser = new Parser();2$parser->match_Other("1.php");3$parser = new Parser();4$parser->match_Other("2.php");5$parser = new Parser();6$parser->match_Other("3.php");7$parser = new Parser();8$parser->match_Other("4.php");9$parser = new Parser();10$parser->match_Other("5.php");11$parser = new Parser();12$parser->match_Other("6.php");13$parser = new Parser();14$parser->match_Other("7.php");15$parser = new Parser();16$parser->match_Other("8.php");17$parser = new Parser();18$parser->match_Other("9.php");19$parser = new Parser();20$parser->match_Other("10.php");21$parser = new Parser();22$parser->match_Other("11.php");23$parser = new Parser();24$parser->match_Other("12.php");25$parser = new Parser();26$parser->match_Other("13.php");27$parser = new Parser();28$parser->match_Other("14.php");29$parser = new Parser();match_Other
Using AI Code Generation
1include_once('Parser.php');2$parser = new Parser();3$parser->match_Other();4{5    public $text;6    public function match_Other()7    {8        $this->text = 'This is a simple string.';9        $pattern = '/\w+/';10        preg_match($pattern, $this->text, $matches);11        echo $matches[0];12    }13}14Example 2: Using preg_match_all() function15include_once('Parser.php');16$parser = new Parser();17$parser->match_All();18{19    public $text;20    public function match_All()21    {22        $this->text = 'This is a simple string.';23        $pattern = '/\w+/';24        preg_match_all($pattern, $this->text, $matches);25        print_r($matches);26    }27}28        (29Example 3: Using preg_match_all() function30include_once('Parser.php');31$parser = new Parser();32$parser->match_All();33{34    public $text;35    public function match_All()36    {37        $this->text = 'This is a simple string.';38        $pattern = '/\w+/';39        preg_match_all($pattern, $this->text, $matches);match_Other
Using AI Code Generation
1require_once 'Parser.php';2$parser = new Parser();3$parser->match_Other();4        (5                (6                (7        (8                (9                (10        (11                (12                (match_Other
Using AI Code Generation
1$parser->match_Other();2echo $parser->tok[0];3echo $parser->tok[1];4echo $parser->tok[2];5echo $parser->tok[3];6echo $parser->tok[4];7echo $parser->tok[5];8echo $parser->tok[6];9echo $parser->tok[7];10echo $parser->tok[8];11echo $parser->tok[9];12echo $parser->tok[10];13echo $parser->tok[11];14echo $parser->tok[12];15echo $parser->tok[13];16echo $parser->tok[14];17echo $parser->tok[15];18echo $parser->tok[16];19echo $parser->tok[17];20echo $parser->tok[18];21echo $parser->tok[19];22echo $parser->tok[20];23echo $parser->tok[21];24echo $parser->tok[22];25echo $parser->tok[23];26echo $parser->tok[24];27echo $parser->tok[25];28echo $parser->tok[26];29echo $parser->tok[27];30echo $parser->tok[28];31echo $parser->tok[29];32echo $parser->tok[30];33echo $parser->tok[31];34echo $parser->tok[32];35echo $parser->tok[33];36echo $parser->tok[34];37echo $parser->tok[35];38echo $parser->tok[36];39echo $parser->tok[37];40echo $parser->tok[38];41echo $parser->tok[39];42echo $parser->tok[40];43echo $parser->tok[41];44echo $parser->tok[42];45echo $parser->tok[43];46echo $parser->tok[44];47echo $parser->tok[45];48echo $parser->tok[46];49echo $parser->tok[47];50echo $parser->tok[48];51echo $parser->tok[49];52echo $parser->tok[50];53echo $parser->tok[51];54echo $parser->tok[52];55echo $parser->tok[53];56echo $parser->tok[54];57echo $parser->tok[55];58echo $parser->tok[56];59echo $parser->tok[57];60echo $parser->tok[58];match_Other
Using AI Code Generation
1require_once('Parser.php');2$parser = new Parser();3$parser->match_Other('1.php');4require_once('Parser.php');5$parser = new Parser();6$parser->match_Other('1.php');7require_once('Parser.php');8$parser = new Parser();9$parser->match_Other('1.php');10require_once('Parser.php');11$parser = new Parser();12$parser->match_Other('1.php');13require_once('Parser.php');14$parser = new Parser();15$parser->match_Other('1.php');16require_once('Parser.php');17$parser = new Parser();18$parser->match_Other('1.php');19require_once('Parser.php');20$parser = new Parser();21$parser->match_Other('1.php');Check out the latest blogs from LambdaTest on this topic:
Estimates are critical if you want to be successful with projects. If you begin with a bad estimating approach, the project will almost certainly fail. To produce a much more promising estimate, direct each estimation-process issue toward a repeatable standard process. A smart approach reduces the degree of uncertainty. When dealing with presales phases, having the most precise estimation findings can assist you to deal with the project plan. This also helps the process to function more successfully, especially when faced with tight schedules and the danger of deviation.
QA testers have a unique role and responsibility to serve the customer. Serving the customer in software testing means protecting customers from application defects, failures, and perceived failures from missing or misunderstood requirements.  Testing for known requirements based on documentation or discussion is the core of the testing profession. One unique way QA testers can both differentiate themselves and be innovative occurs when senseshaping is used to improve the application user experience. 
The rapid shift in the use of technology has impacted testing and quality assurance significantly, especially around the cloud adoption of agile development methodologies. With this, the increasing importance of quality and automation testing has risen enough to deliver quality work.
Dries Buytaert, a graduate student at the University of Antwerp, came up with the idea of developing something similar to a chat room. Moreover, he modified the conventional chat rooms into a website where his friends could post their queries and reply through comments. However, for this project, he thought of creating a temporary archive of posts.
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Execute automation tests with match_Other on a cloud-based Grid of 3000+ real browsers and operating systems for both web and mobile applications.
Test now for FreeGet 100 minutes of automation test minutes FREE!!
