⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchcommandparser.php.svn-base

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 SVN-BASE
📖 第 1 页 / 共 4 页
字号:
#line 999 "SearchCommandParser.php"#line 163 "SearchCommandParser.y"    function yy_r17(){	$this->yystack[$this->yyidx + 0]->minor->addValue($this->yystack[$this->yyidx + -2]->minor);	$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;    }#line 1005 "SearchCommandParser.php"#line 169 "SearchCommandParser.y"    function yy_r18(){	$this->_retvalue = new ValueListExpr($this->yystack[$this->yyidx + 0]->minor);    }#line 1010 "SearchCommandParser.php"#line 174 "SearchCommandParser.y"    function yy_r19(){	$this->_retvalue = ExprOp::CONTAINS;    }#line 1015 "SearchCommandParser.php"#line 179 "SearchCommandParser.y"    function yy_r20(){	$this->_retvalue = ExprOp::LESS_THAN;    }#line 1020 "SearchCommandParser.php"#line 184 "SearchCommandParser.y"    function yy_r21(){	$this->_retvalue = ExprOp::GREATER_THAN;    }#line 1025 "SearchCommandParser.php"#line 189 "SearchCommandParser.y"    function yy_r22(){	$this->_retvalue = ExprOp::LESS_THAN_EQUAL;    }#line 1030 "SearchCommandParser.php"#line 194 "SearchCommandParser.y"    function yy_r23(){	$this->_retvalue = ExprOp::GREATER_THAN_EQUAL;    }#line 1035 "SearchCommandParser.php"#line 199 "SearchCommandParser.y"    function yy_r24(){	$this->_retvalue = ExprOp::STARTS_WITH;    }#line 1040 "SearchCommandParser.php"#line 204 "SearchCommandParser.y"    function yy_r25(){	$this->_retvalue = ExprOp::ENDS_WITH;    }#line 1045 "SearchCommandParser.php"#line 209 "SearchCommandParser.y"    function yy_r26(){	$this->_retvalue = ExprOp::IS_NOT;    }#line 1050 "SearchCommandParser.php"    /**     * placeholder for the left hand side in a reduce operation.     *      * For a parser with a rule like this:     * <pre>     * rule(A) ::= B. { A = 1; }     * </pre>     *      * The parser will translate to something like:     *      * <code>     * function yy_r0(){$this->_retvalue = 1;}     * </code>     */    private $_retvalue;    /**     * Perform a reduce action and the shift that must immediately     * follow the reduce.     *      * For a rule such as:     *      * <pre>     * A ::= B blah C. { dosomething(); }     * </pre>     *      * This function will first call the action, if any, ("dosomething();" in our     * example), and then it will pop three states from the stack,     * one for each entry on the right-hand side of the expression     * (B, blah, and C in our example rule), and then push the result of the action     * back on to the stack with the resulting state reduced to (as described in the .out     * file)     * @param int Number of the rule by which to reduce     */    function yy_reduce($yyruleno)    {        //int $yygoto;                     /* The next state */        //int $yyact;                      /* The next action */        //mixed $yygotominor;        /* The LHS of the rule reduced */        //SearchCommandParseryyStackEntry $yymsp;            /* The top of the parser's stack */        //int $yysize;                     /* Amount to pop the stack */        $yymsp = $this->yystack[$this->yyidx];        if (self::$yyTraceFILE && $yyruleno >= 0               && $yyruleno < count(self::$yyRuleName)) {            fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",                self::$yyTracePrompt, $yyruleno,                self::$yyRuleName[$yyruleno]);        }        $this->_retvalue = $yy_lefthand_side = null;        if (array_key_exists($yyruleno, self::$yyReduceMap)) {            // call the action            $this->_retvalue = null;            $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();            $yy_lefthand_side = $this->_retvalue;        }        $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];        $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];        $this->yyidx -= $yysize;        for($i = $yysize; $i; $i--) {            // pop all of the right-hand side parameters            array_pop($this->yystack);        }        $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);        if ($yyact < self::YYNSTATE) {            /* If we are not debugging and the reduce action popped at least            ** one element off the stack, then we can push the new element back            ** onto the stack here, and skip the stack overflow test in yy_shift().            ** That gives a significant speed improvement. */            if (!self::$yyTraceFILE && $yysize) {                $this->yyidx++;                $x = new SearchCommandParseryyStackEntry;                $x->stateno = $yyact;                $x->major = $yygoto;                $x->minor = $yy_lefthand_side;                $this->yystack[$this->yyidx] = $x;            } else {                $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);            }        } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {            $this->yy_accept();        }    }    /**     * The following code executes when the parse fails     *      * Code from %parse_fail is inserted here     */    function yy_parse_failed()    {        if (self::$yyTraceFILE) {            fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);        }        while ($this->yyidx >= 0) {            $this->yy_pop_parser_stack();        }        /* Here code is inserted which will be executed whenever the        ** parser fails */#line 46 "SearchCommandParser.y"    $this->parse_result = 'syntax';#line 1155 "SearchCommandParser.php"    }    /**     * The following code executes when a syntax error first occurs.     *      * %syntax_error code is inserted here     * @param int The major type of the error token     * @param mixed The minor type of the error token     */    function yy_syntax_error($yymajor, $TOKEN)    {#line 35 "SearchCommandParser.y"    $this->parse_result = 'syntax';    $this->parse_message = "";#line 1172 "SearchCommandParser.php"    }    /**     * The following is executed when the parser accepts     *      * %parse_accept code is inserted here     */    function yy_accept()    {        if (self::$yyTraceFILE) {            fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);        }        while ($this->yyidx >= 0) {            $stack = $this->yy_pop_parser_stack();        }        /* Here code is inserted which will be executed whenever the        ** parser accepts */#line 41 "SearchCommandParser.y"      $this->parse_result  = 'ok';#line 1194 "SearchCommandParser.php"    }    /**     * The main parser program.     *      * The first argument is the major token number.  The second is     * the token value string as scanned from the input.     *     * @param int the token number     * @param mixed the token value     * @param mixed any extra arguments that should be passed to handlers     */    function doParse($yymajor, $yytokenvalue)    {//        $yyact;            /* The parser action. *///        $yyendofinput;     /* True if we are at the end of input */        $yyerrorhit = 0;   /* True if yymajor has invoked an error */                /* (re)initialize the parser, if necessary */        if ($this->yyidx === null || $this->yyidx < 0) {            /* if ($yymajor == 0) return; // not sure why this was here... */            $this->yyidx = 0;            $this->yyerrcnt = -1;            $x = new SearchCommandParseryyStackEntry;            $x->stateno = 0;            $x->major = 0;            $this->yystack = array();            array_push($this->yystack, $x);        }        $yyendofinput = ($yymajor==0);                if (self::$yyTraceFILE) {            fprintf(self::$yyTraceFILE, "%sInput %s\n",                self::$yyTracePrompt, self::$yyTokenName[$yymajor]);        }                do {            $yyact = $this->yy_find_shift_action($yymajor);            if ($yymajor < self::YYERRORSYMBOL &&                  !$this->yy_is_expected_token($yymajor)) {                // force a syntax error                $yyact = self::YY_ERROR_ACTION;            }            if ($yyact < self::YYNSTATE) {                $this->yy_shift($yyact, $yymajor, $yytokenvalue);                $this->yyerrcnt--;                if ($yyendofinput && $this->yyidx >= 0) {                    $yymajor = 0;                } else {                    $yymajor = self::YYNOCODE;                }            } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {                $this->yy_reduce($yyact - self::YYNSTATE);            } elseif ($yyact == self::YY_ERROR_ACTION) {                if (self::$yyTraceFILE) {                    fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",                        self::$yyTracePrompt);                }                if (self::YYERRORSYMBOL) {                    /* A syntax error has occurred.                    ** The response to an error depends upon whether or not the                    ** grammar defines an error token "ERROR".                      **                    ** This is what we do if the grammar does define ERROR:                    **                    **  * Call the %syntax_error function.                    **                    **  * Begin popping the stack until we enter a state where                    **    it is legal to shift the error symbol, then shift                    **    the error symbol.                    **                    **  * Set the error count to three.                    **                    **  * Begin accepting and shifting new tokens.  No new error                    **    processing will occur until three tokens have been                    **    shifted successfully.                    **                    */                    if ($this->yyerrcnt < 0) {                        $this->yy_syntax_error($yymajor, $yytokenvalue);                    }                    $yymx = $this->yystack[$this->yyidx]->major;                    if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){                        if (self::$yyTraceFILE) {                            fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",                                self::$yyTracePrompt, self::$yyTokenName[$yymajor]);                        }                        $this->yy_destructor($yymajor, $yytokenvalue);                        $yymajor = self::YYNOCODE;                    } else {                        while ($this->yyidx >= 0 &&                                 $yymx != self::YYERRORSYMBOL &&        ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE                              ){                            $this->yy_pop_parser_stack();                        }                        if ($this->yyidx < 0 || $yymajor==0) {                            $this->yy_destructor($yymajor, $yytokenvalue);                            $this->yy_parse_failed();                            $yymajor = self::YYNOCODE;                        } elseif ($yymx != self::YYERRORSYMBOL) {                            $u2 = 0;                            $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);                        }                    }                    $this->yyerrcnt = 3;                    $yyerrorhit = 1;                } else {                    /* YYERRORSYMBOL is not defined */                    /* This is what we do if the grammar does not define ERROR:                    **                    **  * Report an error message, and throw away the input token.                    **                    **  * If the input token is $, then fail the parse.                    **                    ** As before, subsequent error messages are suppressed until                    ** three input tokens have been successfully shifted.                    */                    if ($this->yyerrcnt <= 0) {                        $this->yy_syntax_error($yymajor, $yytokenvalue);                    }                    $this->yyerrcnt = 3;                    $this->yy_destructor($yymajor, $yytokenvalue);                    if ($yyendofinput) {                        $this->yy_parse_failed();                    }                    $yymajor = self::YYNOCODE;                }            } else {                $this->yy_accept();                $yymajor = self::YYNOCODE;            }                    } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -