<?php declare(strict_types=1);
$meta #
#semval($) $self->semValue
#semval($,%t) $self->semValue
#semval(%n) $stackPos-(%l-%n)
#semval(%n,%t) $stackPos-(%l-%n)

namespace DevTheorem\HandlebarsParser;

use DevTheorem\HandlebarsParser\Ast\ArrayLiteral;
use DevTheorem\HandlebarsParser\Ast\BooleanLiteral;
use DevTheorem\HandlebarsParser\Ast\CloseBlock;
use DevTheorem\HandlebarsParser\Ast\CommentStatement;
use DevTheorem\HandlebarsParser\Ast\ContentStatement;
use DevTheorem\HandlebarsParser\Ast\Hash;
use DevTheorem\HandlebarsParser\Ast\HashLiteral;
use DevTheorem\HandlebarsParser\Ast\HashPair;
use DevTheorem\HandlebarsParser\Ast\InverseChain;
use DevTheorem\HandlebarsParser\Ast\NullLiteral;
use DevTheorem\HandlebarsParser\Ast\NumberLiteral;
use DevTheorem\HandlebarsParser\Ast\OpenBlock;
use DevTheorem\HandlebarsParser\Ast\OpenHelper;
use DevTheorem\HandlebarsParser\Ast\OpenPartialBlock;
use DevTheorem\HandlebarsParser\Ast\PartialStatement;
use DevTheorem\HandlebarsParser\Ast\PathSegment;
use DevTheorem\HandlebarsParser\Ast\StringLiteral;
use DevTheorem\HandlebarsParser\Ast\SubExpression;
use DevTheorem\HandlebarsParser\Ast\UndefinedLiteral;
#include;

/* This is an automatically GENERATED file, which should not be manually edited.
 * Instead edit one of the following:
 *  * the grammar file grammar/handlebars.y
 *  * the skeleton file grammar/parser.template
 *  * the preprocessing script grammar/rebuildParser.php
 */
class #(-p) extends ParserAbstract
{
#tokenval
    public const %s = %n;
#endtokenval

    protected int $tokenToSymbolMapSize = #(YYMAXLEX);
    protected int $actionTableSize = #(YYLAST);
    protected int $gotoTableSize = #(YYGLAST);

    protected int $invalidSymbol = #(YYBADCH);
    protected int $errorSymbol = #(YYINTERRTOK);
    protected int $defaultAction = #(YYDEFAULT);
    protected int $unexpectedTokenRule = #(YYUNEXPECTED);

    protected int $YY2TBLSTATE = #(YY2TBLSTATE);
    protected int $numNonLeafStates = #(YYNLSTATES);

    protected array $symbolToName = array(
        #listvar terminals
    );

    protected array $tokenToSymbol = array(
        #listvar yytranslate
    );

    protected array $action = array(
        #listvar yyaction
    );

    protected array $actionCheck = array(
        #listvar yycheck
    );

    protected array $actionBase = array(
        #listvar yybase
    );

    protected array $actionDefault = array(
        #listvar yydefault
    );

    protected array $goto = array(
        #listvar yygoto
    );

    protected array $gotoCheck = array(
        #listvar yygcheck
    );

    protected array $gotoBase = array(
        #listvar yygbase
    );

    protected array $gotoDefault = array(
        #listvar yygdefault
    );

    protected array $ruleToNonTerminal = array(
        #listvar yylhs
    );

    protected array $ruleToLength = array(
        #listvar yylen
    );
#if -t

    protected array $productions = array(
        #production-strings;
    );
#endif

    protected function initReduceCallbacks(): void {
        $this->reduceCallbacks = [
#reduce
            %n => static function ($self, $stackPos) {
                %b
            },
#noact
            %n => null,
#endreduce
        ];
    }
}
#tailcode;
