Source for file Parser.php
Documentation is available at Parser.php
/* Driver template for the PHP_PHP_LexerGenerator_Regex_rGenerator parser generator. (PHP port of LEMON)
* This can be used to store both the string representation of
* a token, and any useful meta-data associated with the token.
* meta-data should be stored as an array
$value->metadata : $value;
$this->metadata[$offset] = $value->metadata;
/** The following structure represents a single element of the
* parser's stack. Information stored includes:
* + The state number for the parser at this level of the stack.
* + The value of the token stored at this level of the stack.
* (In other words, the "major" token.)
* + The semantic value stored at this level of the stack. This is
* the information used by the action routines in the grammar.
* It is sometimes called the "minor" token.
public $major; /* The major token value. This is the code
** number for the token at this stack level */
public $minor; /* The user-supplied minor token value. This
** is the value of the token */
// code external to the class is included here
require_once 'PHP/LexerGenerator/Exception.php';
// declare_class is output here
/* First off, code is included which follows the "include_class" declaration
$this->_patternIndex = 1;
function reset($patternIndex, $updatePattern = false)
$this->_updatePattern = $updatePattern;
$this->_patternIndex = $patternIndex;
/* Next is all token values, as class constants
** These constants (all generated automatically by the parser generator)
** specify the various kinds of tokens (terminals) that the parser
** Each symbol here is a terminal symbol in the grammar.
const CLOSECHARCLASS = 8;
const ESCAPEDBACKSLASH = 12;
const BACKREFERENCE = 14;
const COULDBEBACKREF = 15;
const INTERNALOPTIONS = 17;
const POSITIVELOOKAHEAD = 20;
const NEGATIVELOOKAHEAD = 21;
const POSITIVELOOKBEHIND = 22;
const NEGATIVELOOKBEHIND = 23;
const YY_NO_ACTION = 252;
const YY_ACCEPT_ACTION = 251;
const YY_ERROR_ACTION = 250;
/* Next are that tables used to determine what action to take based on the
** current state and lookahead token. These tables are used to implement
** functions that take a state number and lookahead value and return an
** Suppose the action integer is N. Then the action is determined as
** 0 <= N < self::YYNSTATE Shift N. That is,
** self::YYNSTATE <= N < self::YYNSTATE+self::YYNRULE Reduce by rule N-YYNSTATE.
** N == self::YYNSTATE+self::YYNRULE A syntax error has occurred.
** N == self::YYNSTATE+self::YYNRULE+1 The parser accepts its
** input. (and concludes parsing)
** N == self::YYNSTATE+self::YYNRULE+2 No such action. Denotes unused
** slots in the yy_action[] table.
** The action table is constructed as a single large static array $yy_action.
** Given state S and lookahead X, the action is computed as
** self::$yy_action[self::$yy_shift_ofst[S] + X ]
** If the index value self::$yy_shift_ofst[S]+X is out of range or if the value
** self::$yy_lookahead[self::$yy_shift_ofst[S]+X] is not equal to X or if
** self::$yy_shift_ofst[S] is equal to self::YY_SHIFT_USE_DFLT, it means that
** the action is not in the table and that self::$yy_default[S] should be used instead.
** The formula above is for computing the action when the lookahead is
** a terminal symbol. If the lookahead is a non-terminal (as occurs after
** a reduce action) then the static $yy_reduce_ofst array is used in place of
** the static $yy_shift_ofst array and self::YY_REDUCE_USE_DFLT is used in place of
** self::YY_SHIFT_USE_DFLT.
** The following are the tables generated in this section:
** self::$yy_action A single table containing all actions.
** self::$yy_lookahead A table containing the lookahead for each entry in
** yy_action. Used to detect hash collisions.
** self::$yy_shift_ofst For each state, the offset into self::$yy_action for
** self::$yy_reduce_ofst For each state, the offset into self::$yy_action for
** shifting non-terminals after a reduce.
** self::$yy_default Default action for each state.
const YY_SZ_ACTTAB = 367;
/* 0 */ 251, 50, 16, 21, 128, 129, 141, 140, 139, 142,
/* 10 */ 143, 145, 144, 138, 41, 16, 21, 128, 129, 141,
/* 20 */ 140, 139, 142, 143, 145, 144, 138, 43, 16, 21,
/* 30 */ 128, 129, 141, 140, 139, 142, 143, 145, 144, 138,
/* 40 */ 98, 16, 21, 128, 129, 141, 140, 139, 142, 143,
/* 50 */ 145, 144, 138, 32, 16, 21, 128, 129, 141, 140,
/* 60 */ 139, 142, 143, 145, 144, 138, 39, 16, 21, 128,
/* 70 */ 129, 141, 140, 139, 142, 143, 145, 144, 138, 31,
/* 80 */ 16, 21, 128, 129, 141, 140, 139, 142, 143, 145,
/* 90 */ 144, 138, 42, 16, 21, 128, 129, 141, 140, 139,
/* 100 */ 142, 143, 145, 144, 138, 29, 16, 21, 128, 129,
/* 110 */ 141, 140, 139, 142, 143, 145, 144, 138, 35, 16,
/* 120 */ 21, 128, 129, 141, 140, 139, 142, 143, 145, 144,
/* 130 */ 138, 40, 16, 21, 128, 129, 141, 140, 139, 142,
/* 140 */ 143, 145, 144, 138, 37, 16, 21, 128, 129, 141,
/* 150 */ 140, 139, 142, 143, 145, 144, 138, 38, 16, 21,
/* 160 */ 128, 129, 141, 140, 139, 142, 143, 145, 144, 138,
/* 170 */ 36, 16, 21, 128, 129, 141, 140, 139, 142, 143,
/* 180 */ 145, 144, 138, 15, 21, 128, 129, 141, 140, 139,
/* 190 */ 142, 143, 145, 144, 138, 54, 24, 23, 78, 75,
/* 200 */ 76, 82, 83, 89, 88, 87, 84, 86, 112, 115,
/* 210 */ 114, 34, 11, 1, 7, 8, 4, 2, 3, 13,
/* 220 */ 52, 60, 10, 17, 102, 108, 14, 55, 18, 96,
/* 230 */ 11, 47, 61, 48, 124, 46, 49, 51, 10, 17,
/* 240 */ 106, 11, 11, 97, 18, 44, 103, 47, 61, 48,
/* 250 */ 56, 46, 49, 51, 10, 17, 58, 132, 117, 111,
/* 260 */ 18, 119, 12, 47, 61, 48, 122, 46, 49, 51,
/* 270 */ 10, 17, 7, 8, 4, 2, 18, 28, 11, 47,
/* 280 */ 61, 48, 135, 46, 49, 51, 116, 137, 65, 127,
/* 290 */ 64, 63, 73, 79, 113, 120, 68, 70, 71, 11,
/* 300 */ 67, 66, 69, 62, 26, 64, 63, 73, 99, 113,
/* 310 */ 120, 19, 72, 74, 59, 126, 92, 80, 72, 74,
/* 320 */ 59, 11, 92, 80, 123, 121, 118, 131, 93, 100,
/* 330 */ 130, 136, 133, 11, 11, 11, 53, 11, 11, 11,
/* 340 */ 6, 9, 107, 125, 110, 146, 33, 81, 57, 91,
/* 350 */ 104, 85, 105, 94, 45, 27, 95, 101, 25, 109,
/* 360 */ 134, 30, 5, 77, 20, 22, 90,
/* 0 */ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
/* 10 */ 39, 40, 41, 42, 30, 31, 32, 33, 34, 35,
/* 20 */ 36, 37, 38, 39, 40, 41, 42, 30, 31, 32,
/* 30 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
/* 40 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
/* 50 */ 40, 41, 42, 30, 31, 32, 33, 34, 35, 36,
/* 60 */ 37, 38, 39, 40, 41, 42, 30, 31, 32, 33,
/* 70 */ 34, 35, 36, 37, 38, 39, 40, 41, 42, 30,
/* 80 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
/* 90 */ 41, 42, 30, 31, 32, 33, 34, 35, 36, 37,
/* 100 */ 38, 39, 40, 41, 42, 30, 31, 32, 33, 34,
/* 110 */ 35, 36, 37, 38, 39, 40, 41, 42, 30, 31,
/* 120 */ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
/* 130 */ 42, 30, 31, 32, 33, 34, 35, 36, 37, 38,
/* 140 */ 39, 40, 41, 42, 30, 31, 32, 33, 34, 35,
/* 150 */ 36, 37, 38, 39, 40, 41, 42, 30, 31, 32,
/* 160 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
/* 170 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
/* 180 */ 40, 41, 42, 31, 32, 33, 34, 35, 36, 37,
/* 190 */ 38, 39, 40, 41, 42, 1, 2, 32, 33, 34,
/* 200 */ 35, 36, 37, 38, 39, 40, 41, 42, 10, 11,
/* 210 */ 12, 17, 3, 19, 20, 21, 22, 23, 24, 25,
/* 220 */ 26, 27, 1, 2, 10, 11, 5, 18, 7, 18,
/* 230 */ 3, 10, 11, 12, 4, 14, 15, 16, 1, 2,
/* 240 */ 4, 3, 3, 6, 7, 18, 4, 10, 11, 12,
/* 250 */ 10, 14, 15, 16, 1, 2, 18, 18, 4, 6,
/* 260 */ 7, 18, 19, 10, 11, 12, 4, 14, 15, 16,
/* 270 */ 1, 2, 20, 21, 22, 23, 7, 13, 3, 10,
/* 280 */ 11, 12, 4, 14, 15, 16, 10, 11, 8, 4,
/* 290 */ 10, 11, 12, 18, 14, 15, 10, 11, 12, 3,
/* 300 */ 14, 15, 16, 8, 13, 10, 11, 12, 18, 14,
/* 310 */ 15, 9, 10, 11, 12, 4, 14, 15, 10, 11,
/* 320 */ 12, 3, 14, 15, 10, 11, 12, 10, 11, 12,
/* 330 */ 10, 11, 12, 3, 3, 3, 18, 3, 3, 3,
/* 340 */ 36, 37, 4, 4, 4, 4, 13, 4, 18, 18,
/* 350 */ 18, 4, 18, 18, 18, 13, 4, 4, 13, 4,
/* 360 */ 4, 13, 18, 4, 43, 43, 4,
const YY_SHIFT_USE_DFLT = - 1;
/* 0 */ 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
/* 10 */ 221, 221, 221, 221, 269, 237, 253, 194, 302, 308,
/* 20 */ 280, 286, 295, 286, 252, 320, 317, 198, 314, 336,
/* 30 */ 276, 239, 335, 214, 243, 332, 330, 318, 334, 275,
/* 40 */ 209, 227, 331, 238, 362, 359, 230, 278, 262, 285,
/* 50 */ 296, 311, 211, 254, 240, 356, 344, 353, 347, 333,
/* 60 */ 290, 341, 340, 345,  |