phpDocumentor PHP_LexerGenerator
[ class tree: PHP_LexerGenerator ] [ index: PHP_LexerGenerator ] [ all elements ]

Source for file aLexer.php

Documentation is available at aLexer.php

  1. <?php
  2. require_once dirname(__FILE__'/Parser.php';
  3. {
  4.     const MATCHSTART PHP_LexerGenerator_Regex_Parser::MATCHSTART;
  5.     const MATCHEND PHP_LexerGenerator_Regex_Parser::MATCHEND;
  6.     const CONTROLCHAR PHP_LexerGenerator_Regex_Parser::CONTROLCHAR;
  7.     const OPENCHARCLASS PHP_LexerGenerator_Regex_Parser::OPENCHARCLASS;
  8.     const FULLSTOP PHP_LexerGenerator_Regex_Parser::FULLSTOP;
  9.     const TEXT PHP_LexerGenerator_Regex_Parser::TEXT;
  10.     const BACKREFERENCE PHP_LexerGenerator_Regex_Parser::BACKREFERENCE;
  11.     const OPENASSERTION PHP_LexerGenerator_Regex_Parser::OPENASSERTION;
  12.     const COULDBEBACKREF PHP_LexerGenerator_Regex_Parser::COULDBEBACKREF;
  13.     const NEGATE PHP_LexerGenerator_Regex_Parser::NEGATE;
  14.     const HYPHEN PHP_LexerGenerator_Regex_Parser::HYPHEN;
  15.     const CLOSECHARCLASS PHP_LexerGenerator_Regex_Parser::CLOSECHARCLASS;
  16.     const BAR PHP_LexerGenerator_Regex_Parser::BAR;
  17.     const MULTIPLIER PHP_LexerGenerator_Regex_Parser::MULTIPLIER;
  18.     const INTERNALOPTIONS PHP_LexerGenerator_Regex_Parser::INTERNALOPTIONS;
  19.     const COLON PHP_LexerGenerator_Regex_Parser::COLON;
  20.     const OPENPAREN PHP_LexerGenerator_Regex_Parser::OPENPAREN;
  21.     const CLOSEPAREN PHP_LexerGenerator_Regex_Parser::CLOSEPAREN;
  22.     const PATTERNNAME PHP_LexerGenerator_Regex_Parser::PATTERNNAME;
  23.     const POSITIVELOOKBEHIND PHP_LexerGenerator_Regex_Parser::POSITIVELOOKBEHIND;
  24.     const NEGATIVELOOKBEHIND PHP_LexerGenerator_Regex_Parser::NEGATIVELOOKBEHIND;
  25.     const POSITIVELOOKAHEAD PHP_LexerGenerator_Regex_Parser::POSITIVELOOKAHEAD;
  26.     const NEGATIVELOOKAHEAD PHP_LexerGenerator_Regex_Parser::NEGATIVELOOKAHEAD;
  27.     const ONCEONLY PHP_LexerGenerator_Regex_Parser::ONCEONLY;
  28.     const COMMENT PHP_LexerGenerator_Regex_Parser::COMMENT;
  29.     const RECUR PHP_LexerGenerator_Regex_Parser::RECUR;
  30.     const ESCAPEDBACKSLASH PHP_LexerGenerator_Regex_Parser::ESCAPEDBACKSLASH;
  31.     private $input;
  32.     private $N;
  33.     public $token;
  34.     public $value;
  35.     public $line;
  36.  
  37.     function __construct($data)
  38.     {
  39.         $this->input $data;
  40.         $this->0;
  41.     }
  42.  
  43.     function reset($data)
  44.     {
  45.         $this->input $data;
  46.         $this->0;
  47.         $this->yybegin(self::INITIAL);
  48.     }
  49.  
  50.  
  51.     private $_yy_state 1;
  52.     private $_yy_stack array();
  53.  
  54.     function yylex()
  55.     {
  56.         return $this->{'yylex' $this->_yy_state}();
  57.     }
  58.  
  59.     function yypushstate($state)
  60.     {
  61.         array_push($this->_yy_stack$this->_yy_state);
  62.         $this->_yy_state $state;
  63.     }
  64.  
  65.     function yypopstate()
  66.     {
  67.         $this->_yy_state array_pop($this->_yy_stack);
  68.     }
  69.  
  70.     function yybegin($state)
  71.     {
  72.         $this->_yy_state $state;
  73.     }
  74.  
  75.  
  76.  
  77.     function yylex1()
  78.     {
  79.         $tokenMap array (
  80.               => 0,
  81.               => 0,
  82.               => 0,
  83.               => 0,
  84.               => 0,
  85.               => 0,
  86.               => 0,
  87.               => 0,
  88.               => 0,
  89.               10 => 0,
  90.               11 => 0,
  91.               12 => 0,
  92.               13 => 1,
  93.               15 => 0,
  94.               16 => 0,
  95.               17 => 0,
  96.               18 => 0,
  97.               19 => 0,
  98.               20 => 0,
  99.               21 => 0,
  100.               22 => 0,
  101.               23 => 0,
  102.               24 => 0,
  103.             );
  104.         if ($this->>= strlen($this->input)) {
  105.             return false// end of input
  106.         }
  107.             $yy_global_pattern "/^(\\\\\\\\)|^([^[\\\\^$.|()?*+{}]+)|^(\\\\[][{}*.^$|?()+])|^(\\[)|^(\\|)|^(\\\\[0-9][0-9])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[abBGcedDsSwW0C])|^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)/";
  108.  
  109.         do {
  110.             if (preg_match($yy_global_patternsubstr($this->input$this->N)$yymatches)) {
  111.                 $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  112.                 if (!count($yymatches)) {
  113.                     throw new Exception('Error: lexing failed because a rule matched' .
  114.                         'an empty string.  Input "' substr($this->input,
  115.                         $this->N5'... state INITIAL');
  116.                 }
  117.                 next($yymatches)// skip global match
  118.                 $this->token = key($yymatches)// token number
  119.                 // extract sub-patterns for passing to lex function
  120.                 $yysubmatches array_slice($yymatches$this->token,
  121.                     $tokenMap[$this->token]);
  122.                 $this->value = current($yymatches)// token value
  123.                 $r $this->{'yy_r1_' $this->token}($yysubmatches);
  124.                 if ($r === null{
  125.                     $this->+= strlen($this->value);
  126.                     $this->line += substr_count("\n"$this->value);
  127.                     // accept this token
  128.                     return true;
  129.                 elseif ($r === true{
  130.                     // we have changed state
  131.                     // process this token in the new state
  132.                     return $this->yylex();
  133.                 elseif ($r === false{
  134.                     $this->+= strlen($this->value);
  135.                     $this->line += substr_count("\n"$this->value);
  136.                     if ($this->>= strlen($this->input)) {
  137.                         return false// end of input
  138.                     }
  139.                     // skip this token
  140.                     continue;
  141.                 else {                    $yy_yymore_patterns array(
  142.         => "^([^[\\\\^$.|()?*+{}]+)|^(\\\\[][{}*.^$|?()+])|^(\\[)|^(\\|)|^(\\\\[0-9][0-9])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[abBGcedDsSwW0C])|^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  143.         => "^(\\\\[][{}*.^$|?()+])|^(\\[)|^(\\|)|^(\\\\[0-9][0-9])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[abBGcedDsSwW0C])|^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  144.         => "^(\\[)|^(\\|)|^(\\\\[0-9][0-9])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[abBGcedDsSwW0C])|^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  145.         => "^(\\|)|^(\\\\[0-9][0-9])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[abBGcedDsSwW0C])|^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  146.         => "^(\\\\[0-9][0-9])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[abBGcedDsSwW0C])|^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  147.         => "^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[abBGcedDsSwW0C])|^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  148.         => "^(\\\\[abBGcedDsSwW0C])|^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  149.         => "^(\\^)|^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  150.         => "^(\\\\A)|^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  151.         10 => "^(\\))|^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  152.         11 => "^(\\$)|^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  153.         12 => "^([*?+]|\\{[0-9]+\\}|\\{[0-9]+(,)\\}|\\{[0-9]+,[0-9]+\\})|^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  154.         13 => "^(\\\\[zZ])|^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  155.         15 => "^(\\(\\?)|^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  156.         16 => "^(\\()|^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  157.         17 => "^(\\.)|^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  158.         18 => "^(\\\\[1-9])|^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  159.         19 => "^(\\\\p\\{\\^?..?\\}|\\\\P\\{..?\\}|\\\\X)|^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  160.         20 => "^(\\\\p\\{C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  161.         21 => "^(\\\\p\\{\\^C[cfnos]?|L[lmotu]?|M[cen]?|N[dlo]?|P[cdefios]?|S[ckmo]?|Z[lps]?\\})|^(\\\\p[CLMNPSZ])|^(\\\\)",
  162.         22 => "^(\\\\p[CLMNPSZ])|^(\\\\)",
  163.         23 => "^(\\\\)",
  164.         24 => "",
  165.     );
  166.  
  167.                     // yymore is needed
  168.                     do {
  169.                         if (!strlen($yy_yymore_patterns[$this->token])) {
  170.                             throw new Exception('cannot do yymore for the last token');
  171.                         }
  172.                         if (preg_match($yy_yymore_patterns[$this->token],
  173.                               substr($this->input$this->N)$yymatches)) {
  174.                             $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  175.                             next($yymatches)// skip global match
  176.                             $this->token = key($yymatches)// token number
  177.                             $this->value = current($yymatches)// token value
  178.                             $this->line = substr_count("\n"$this->value);
  179.                         }
  180.                     while ($this->{'yy_r1_' $this->token}(!== null);
  181.                     // accept
  182.                     $this->+= strlen($this->value);
  183.                     $this->line += substr_count("\n"$this->value);
  184.                     return true;
  185.                 }
  186.             else {
  187.                 throw new Exception('Unexpected input at line' $this->line .
  188.                     ': ' $this->input[$this->N]);
  189.             }
  190.             break;
  191.         while (true);
  192.     // end function
  193.  
  194.  
  195.     
  196.  
  197.  
  198.     const INITIAL 1;
  199.     function yy_r1_1($yy_subpatterns)
  200.     {
  201.  
  202.     $this->token = self::ESCAPEDBACKSLASH;
  203.     }
  204.     function yy_r1_2($yy_subpatterns)
  205.     {
  206.  
  207.     $this->token = self::TEXT;
  208.     }
  209.     function yy_r1_3($yy_subpatterns)
  210.     {
  211.  
  212.     $this->token = self::CONTROLCHAR;
  213.     }
  214.     function yy_r1_4($yy_subpatterns)
  215.     {
  216.  
  217.     $this->token = self::OPENCHARCLASS;
  218.     $this->yybegin(self::CHARACTERCLASSSTART);
  219.     }
  220.     function yy_r1_5($yy_subpatterns)
  221.     {
  222.  
  223.     $this->token = self::BAR;
  224.     }
  225.     function yy_r1_6($yy_subpatterns)
  226.     {
  227.  
  228.     $this->token = self::COULDBEBACKREF;
  229.     }
  230.     function yy_r1_7($yy_subpatterns)
  231.     {
  232.  
  233.     $this->token = self::TEXT;
  234.     }
  235.     function yy_r1_8($yy_subpatterns)
  236.     {
  237.  
  238.     $this->token = self::CONTROLCHAR;
  239.     }
  240.     function yy_r1_9($yy_subpatterns)
  241.     {
  242.  
  243.     $this->token = self::MATCHSTART;
  244.     }
  245.     function yy_r1_10($yy_subpatterns)
  246.     {
  247.  
  248.     $this->token = self::MATCHSTART;
  249.     }
  250.     function yy_r1_11($yy_subpatterns)
  251.     {
  252.  
  253.     $this->token = self::CLOSEPAREN;
  254.     $this->yybegin(self::INITIAL);
  255.     }
  256.     function yy_r1_12($yy_subpatterns)
  257.     {
  258.  
  259.     $this->token = self::MATCHEND;
  260.     }
  261.     function yy_r1_13($yy_subpatterns)
  262.     {
  263.  
  264.     $this->token = self::MULTIPLIER;
  265.     }
  266.     function yy_r1_15($yy_subpatterns)
  267.     {
  268.  
  269.     $this->token = self::MATCHEND;
  270.     }
  271.     function yy_r1_16($yy_subpatterns)
  272.     {
  273.  
  274.     $this->token = self::OPENASSERTION;
  275.     $this->yybegin(self::ASSERTION);
  276.     }
  277.     function yy_r1_17($yy_subpatterns)
  278.     {
  279.  
  280.     $this->token = self::OPENPAREN;
  281.     }
  282.     function yy_r1_18($yy_subpatterns)
  283.     {
  284.  
  285.     $this->token = self::FULLSTOP;
  286.     }
  287.     function yy_r1_19($yy_subpatterns)
  288.     {
  289.  
  290.     $this->token = self::BACKREFERENCE;
  291.     }
  292.     function yy_r1_20($yy_subpatterns)
  293.     {
  294.  
  295.     $this->token = self::CONTROLCHAR;
  296.     }
  297.     function yy_r1_21($yy_subpatterns)
  298.     {
  299.  
  300.     $this->token = self::CONTROLCHAR;
  301.     }
  302.     function yy_r1_22($yy_subpatterns)
  303.     {
  304.  
  305.     $this->token = self::CONTROLCHAR;
  306.     }
  307.     function yy_r1_23($yy_subpatterns)
  308.     {
  309.  
  310.     $this->token = self::CONTROLCHAR;
  311.     }
  312.     function yy_r1_24($yy_subpatterns)
  313.     {
  314.  
  315.     return false;
  316.     }
  317.  
  318.  
  319.     function yylex2()
  320.     {
  321.         $tokenMap array (
  322.               => 0,
  323.               => 0,
  324.               => 0,
  325.             );
  326.         if ($this->>= strlen($this->input)) {
  327.             return false// end of input
  328.         }
  329.             $yy_global_pattern "/^(\\^)|^(\\])|^(.)/";
  330.  
  331.         do {
  332.             if (preg_match($yy_global_patternsubstr($this->input$this->N)$yymatches)) {
  333.                 $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  334.                 if (!count($yymatches)) {
  335.                     throw new Exception('Error: lexing failed because a rule matched' .
  336.                         'an empty string.  Input "' substr($this->input,
  337.                         $this->N5'... state CHARACTERCLASSSTART');
  338.                 }
  339.                 next($yymatches)// skip global match
  340.                 $this->token = key($yymatches)// token number
  341.                 // extract sub-patterns for passing to lex function
  342.                 $yysubmatches array_slice($yymatches$this->token,
  343.                     $tokenMap[$this->token]);
  344.                 $this->value = current($yymatches)// token value
  345.                 $r $this->{'yy_r2_' $this->token}($yysubmatches);
  346.                 if ($r === null{
  347.                     $this->+= strlen($this->value);
  348.                     $this->line += substr_count("\n"$this->value);
  349.                     // accept this token
  350.                     return true;
  351.                 elseif ($r === true{
  352.                     // we have changed state
  353.                     // process this token in the new state
  354.                     return $this->yylex();
  355.                 elseif ($r === false{
  356.                     $this->+= strlen($this->value);
  357.                     $this->line += substr_count("\n"$this->value);
  358.                     if ($this->>= strlen($this->input)) {
  359.                         return false// end of input
  360.                     }
  361.                     // skip this token
  362.                     continue;
  363.                 else {                    $yy_yymore_patterns array(
  364.         => "^(\\])|^(.)",
  365.         => "^(.)",
  366.         => "",
  367.     );
  368.  
  369.                     // yymore is needed
  370.                     do {
  371.                         if (!strlen($yy_yymore_patterns[$this->token])) {
  372.                             throw new Exception('cannot do yymore for the last token');
  373.                         }
  374.                         if (preg_match($yy_yymore_patterns[$this->token],
  375.                               substr($this->input$this->N)$yymatches)) {
  376.                             $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  377.                             next($yymatches)// skip global match
  378.                             $this->token = key($yymatches)// token number
  379.                             $this->value = current($yymatches)// token value
  380.                             $this->line = substr_count("\n"$this->value);
  381.                         }
  382.                     while ($this->{'yy_r2_' $this->token}(!== null);
  383.                     // accept
  384.                     $this->+= strlen($this->value);
  385.                     $this->line += substr_count("\n"$this->value);
  386.                     return true;
  387.                 }
  388.             else {
  389.                 throw new Exception('Unexpected input at line' $this->line .
  390.                     ': ' $this->input[$this->N]);
  391.             }
  392.             break;
  393.         while (true);
  394.     // end function
  395.  
  396.  
  397.     
  398.  
  399.  
  400.     const CHARACTERCLASSSTART 2;
  401.     function yy_r2_1($yy_subpatterns)
  402.     {
  403.  
  404.     $this->token = self::NEGATE;
  405.     }
  406.     function yy_r2_2($yy_subpatterns)
  407.     {
  408.  
  409.     $this->yybegin(self::CHARACTERCLASS);
  410.     $this->token = self::TEXT;
  411.     }
  412.     function yy_r2_3($yy_subpatterns)
  413.     {
  414.  
  415.     $this->yybegin(self::CHARACTERCLASS);
  416.     return true;
  417.     }
  418.  
  419.  
  420.     function yylex3()
  421.     {
  422.         $tokenMap array (
  423.               => 0,
  424.               => 0,
  425.               => 0,
  426.               => 0,
  427.               => 0,
  428.               => 0,
  429.               => 0,
  430.               => 0,
  431.               => 0,
  432.             );
  433.         if ($this->>= strlen($this->input)) {
  434.             return false// end of input
  435.         }
  436.             $yy_global_pattern "/^(\\\\\\\\)|^(\\])|^(\\\\[]\\.\\-\\^])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[bacedDsSwW0C]|\\\\x\\{[0-9a-fA-F]+\\})|^(-)|^([^\\-\\\\])|^(\\\\)|^(.)/";
  437.  
  438.         do {
  439.             if (preg_match($yy_global_patternsubstr($this->input$this->N)$yymatches)) {
  440.                 $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  441.                 if (!count($yymatches)) {
  442.                     throw new Exception('Error: lexing failed because a rule matched' .
  443.                         'an empty string.  Input "' substr($this->input,
  444.                         $this->N5'... state CHARACTERCLASS');
  445.                 }
  446.                 next($yymatches)// skip global match
  447.                 $this->token = key($yymatches)// token number
  448.                 // extract sub-patterns for passing to lex function
  449.                 $yysubmatches array_slice($yymatches$this->token,
  450.                     $tokenMap[$this->token]);
  451.                 $this->value = current($yymatches)// token value
  452.                 $r $this->{'yy_r3_' $this->token}($yysubmatches);
  453.                 if ($r === null{
  454.                     $this->+= strlen($this->value);
  455.                     $this->line += substr_count("\n"$this->value);
  456.                     // accept this token
  457.                     return true;
  458.                 elseif ($r === true{
  459.                     // we have changed state
  460.                     // process this token in the new state
  461.                     return $this->yylex();
  462.                 elseif ($r === false{
  463.                     $this->+= strlen($this->value);
  464.                     $this->line += substr_count("\n"$this->value);
  465.                     if ($this->>= strlen($this->input)) {
  466.                         return false// end of input
  467.                     }
  468.                     // skip this token
  469.                     continue;
  470.                 else {                    $yy_yymore_patterns array(
  471.         => "^(\\])|^(\\\\[]\\.\\-\\^])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[bacedDsSwW0C]|\\\\x\\{[0-9a-fA-F]+\\})|^(-)|^([^\\-\\\\])|^(\\\\)|^(.)",
  472.         => "^(\\\\[]\\.\\-\\^])|^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[bacedDsSwW0C]|\\\\x\\{[0-9a-fA-F]+\\})|^(-)|^([^\\-\\\\])|^(\\\\)|^(.)",
  473.         => "^(\\\\[frnt]|\\\\x[0-9a-fA-F][0-9a-fA-F]?|\\\\[0-7][0-7][0-7]|\\\\x\\{[0-9a-fA-F]+\\})|^(\\\\[bacedDsSwW0C]|\\\\x\\{[0-9a-fA-F]+\\})|^(-)|^([^\\-\\\\])|^(\\\\)|^(.)",
  474.         => "^(\\\\[bacedDsSwW0C]|\\\\x\\{[0-9a-fA-F]+\\})|^(-)|^([^\\-\\\\])|^(\\\\)|^(.)",
  475.         => "^(-)|^([^\\-\\\\])|^(\\\\)|^(.)",
  476.         => "^([^\\-\\\\])|^(\\\\)|^(.)",
  477.         => "^(\\\\)|^(.)",
  478.         => "^(.)",
  479.         => "",
  480.     );
  481.  
  482.                     // yymore is needed
  483.                     do {
  484.                         if (!strlen($yy_yymore_patterns[$this->token])) {
  485.                             throw new Exception('cannot do yymore for the last token');
  486.                         }
  487.                         if (preg_match($yy_yymore_patterns[$this->token],
  488.                               substr($this->input$this->N)$yymatches)) {
  489.                             $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  490.                             next($yymatches)// skip global match
  491.                             $this->token = key($yymatches)// token number
  492.                             $this->value = current($yymatches)// token value
  493.                             $this->line = substr_count("\n"$this->value);
  494.                         }
  495.                     while ($this->{'yy_r3_' $this->token}(!== null);
  496.                     // accept
  497.                     $this->+= strlen($this->value);
  498.                     $this->line += substr_count("\n"$this->value);
  499.                     return true;
  500.                 }
  501.             else {
  502.                 throw new Exception('Unexpected input at line' $this->line .
  503.                     ': ' $this->input[$this->N]);
  504.             }
  505.             break;
  506.         while (true);
  507.     // end function
  508.  
  509.  
  510.     
  511.  
  512.  
  513.     const CHARACTERCLASS 3;
  514.     function yy_r3_1($yy_subpatterns)
  515.     {
  516.  
  517.     $this->token = self::ESCAPEDBACKSLASH;
  518.     }
  519.     function yy_r3_2($yy_subpatterns)
  520.     {
  521.  
  522.     $this->yybegin(self::INITIAL);
  523.     $this->token = self::CLOSECHARCLASS;
  524.     }
  525.     function yy_r3_3($yy_subpatterns)
  526.     {
  527.  
  528.     $this->token = self::CONTROLCHAR;
  529.     }
  530.     function yy_r3_4($yy_subpatterns)
  531.     {
  532.  
  533.     $this->token = self::TEXT;
  534.     }
  535.     function yy_r3_5($yy_subpatterns)
  536.     {
  537.  
  538.     $this->token = self::CONTROLCHAR;
  539.     }
  540.     function yy_r3_6($yy_subpatterns)
  541.     {
  542.  
  543.     $this->token = self::HYPHEN;
  544.     $this->yybegin(self::RANGE);
  545.     }
  546.     function yy_r3_7($yy_subpatterns)
  547.     {
  548.  
  549.     $this->token = self::TEXT;
  550.     }
  551.     function yy_r3_8($yy_subpatterns)
  552.     {
  553.  
  554.     return false// ignore escaping of normal text
  555.     }
  556.     function yy_r3_9($yy_subpatterns)
  557.     {
  558.  
  559.     $this->token = self::TEXT;
  560.     }
  561.  
  562.  
  563.     function yylex4()
  564.     {
  565.         $tokenMap array (
  566.               => 0,
  567.               => 0,
  568.               => 0,
  569.               => 0,
  570.               => 0,
  571.             );
  572.         if ($this->>= strlen($this->input)) {
  573.             return false// end of input
  574.         }
  575.             $yy_global_pattern "/^(\\\\\\\\)|^(\\\\\\])|^(\\\\[bacedDsSwW0C]|\\\\x\\{[0-9a-fA-F]+\\})|^([^\\-\\\\])|^(\\\\)/";
  576.  
  577.         do {
  578.             if (preg_match($yy_global_patternsubstr($this->input$this->N)$yymatches)) {
  579.                 $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  580.                 if (!count($yymatches)) {
  581.                     throw new Exception('Error: lexing failed because a rule matched' .
  582.                         'an empty string.  Input "' substr($this->input,
  583.                         $this->N5'... state RANGE');
  584.                 }
  585.                 next($yymatches)// skip global match
  586.                 $this->token = key($yymatches)// token number
  587.                 // extract sub-patterns for passing to lex function
  588.                 $yysubmatches array_slice($yymatches$this->token,
  589.                     $tokenMap[$this->token]);
  590.                 $this->value = current($yymatches)// token value
  591.                 $r $this->{'yy_r4_' $this->token}($yysubmatches);
  592.                 if ($r === null{
  593.                     $this->+= strlen($this->value);
  594.                     $this->line += substr_count("\n"$this->value);
  595.                     // accept this token
  596.                     return true;
  597.                 elseif ($r === true{
  598.                     // we have changed state
  599.                     // process this token in the new state
  600.                     return $this->yylex();
  601.                 elseif ($r === false{
  602.                     $this->+= strlen($this->value);
  603.                     $this->line += substr_count("\n"$this->value);
  604.                     if ($this->>= strlen($this->input)) {
  605.                         return false// end of input
  606.                     }
  607.                     // skip this token
  608.                     continue;
  609.                 else {                    $yy_yymore_patterns array(
  610.         => "^(\\\\\\])|^(\\\\[bacedDsSwW0C]|\\\\x\\{[0-9a-fA-F]+\\})|^([^\\-\\\\])|^(\\\\)",
  611.         => "^(\\\\[bacedDsSwW0C]|\\\\x\\{[0-9a-fA-F]+\\})|^([^\\-\\\\])|^(\\\\)",
  612.         => "^([^\\-\\\\])|^(\\\\)",
  613.         => "^(\\\\)",
  614.         => "",
  615.     );
  616.  
  617.                     // yymore is needed
  618.                     do {
  619.                         if (!strlen($yy_yymore_patterns[$this->token])) {
  620.                             throw new Exception('cannot do yymore for the last token');
  621.                         }
  622.                         if (preg_match($yy_yymore_patterns[$this->token],
  623.                               substr($this->input$this->N)$yymatches)) {
  624.                             $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  625.                             next($yymatches)// skip global match
  626.                             $this->token = key($yymatches)// token number
  627.                             $this->value = current($yymatches)// token value
  628.                             $this->line = substr_count("\n"$this->value);
  629.                         }
  630.                     while ($this->{'yy_r4_' $this->token}(!== null);
  631.                     // accept
  632.                     $this->+= strlen($this->value);
  633.                     $this->line += substr_count("\n"$this->value);
  634.                     return true;
  635.                 }
  636.             else {
  637.                 throw new Exception('Unexpected input at line' $this->line .
  638.                     ': ' $this->input[$this->N]);
  639.             }
  640.             break;
  641.         while (true);
  642.     // end function
  643.  
  644.  
  645.     
  646.  
  647.  
  648.     const RANGE 4;
  649.     function yy_r4_1($yy_subpatterns)
  650.     {
  651.  
  652.     $this->token = self::ESCAPEDBACKSLASH;
  653.     }
  654.     function yy_r4_2($yy_subpatterns)
  655.     {
  656.  
  657.     $this->token = self::TEXT;
  658.     $this->yybegin(self::CHARACTERCLASS);
  659.     }
  660.     function yy_r4_3($yy_subpatterns)
  661.     {
  662.  
  663.     $this->token = self::CONTROLCHAR;
  664.     $this->yybegin(self::CHARACTERCLASS);
  665.     }
  666.     function yy_r4_4($yy_subpatterns)
  667.     {
  668.  
  669.     $this->token = self::TEXT;
  670.     $this->yybegin(self::CHARACTERCLASS);
  671.     }
  672.     function yy_r4_5($yy_subpatterns)
  673.     {
  674.  
  675.     return false// ignore escaping of normal text
  676.     }
  677.  
  678.  
  679.     function yylex5()
  680.     {
  681.         $tokenMap array (
  682.               => 0,
  683.               => 0,
  684.               => 0,
  685.               => 0,
  686.               => 0,
  687.               => 0,
  688.               => 0,
  689.               => 0,
  690.               => 0,
  691.               10 => 0,
  692.               11 => 0,
  693.               12 => 0,
  694.               13 => 0,
  695.             );
  696.         if ($this->>= strlen($this->input)) {
  697.             return false// end of input
  698.         }
  699.             $yy_global_pattern "/^([imsxUX]+-[imsxUX]+|[imsxUX]+|-[imsxUX]+)|^(\\:)|^(\\))|^(P\\<[^>]+\\>)|^(\\<\\=)|^(\\<\\!)|^(\\=)|^(\\!)|^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)/";
  700.  
  701.         do {
  702.             if (preg_match($yy_global_patternsubstr($this->input$this->N)$yymatches)) {
  703.                 $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  704.                 if (!count($yymatches)) {
  705.                     throw new Exception('Error: lexing failed because a rule matched' .
  706.                         'an empty string.  Input "' substr($this->input,
  707.                         $this->N5'... state ASSERTION');
  708.                 }
  709.                 next($yymatches)// skip global match
  710.                 $this->token = key($yymatches)// token number
  711.                 // extract sub-patterns for passing to lex function
  712.                 $yysubmatches array_slice($yymatches$this->token,
  713.                     $tokenMap[$this->token]);
  714.                 $this->value = current($yymatches)// token value
  715.                 $r $this->{'yy_r5_' $this->token}($yysubmatches);
  716.                 if ($r === null{
  717.                     $this->+= strlen($this->value);
  718.                     $this->line += substr_count("\n"$this->value);
  719.                     // accept this token
  720.                     return true;
  721.                 elseif ($r === true{
  722.                     // we have changed state
  723.                     // process this token in the new state
  724.                     return $this->yylex();
  725.                 elseif ($r === false{
  726.                     $this->+= strlen($this->value);
  727.                     $this->line += substr_count("\n"$this->value);
  728.                     if ($this->>= strlen($this->input)) {
  729.                         return false// end of input
  730.                     }
  731.                     // skip this token
  732.                     continue;
  733.                 else {                    $yy_yymore_patterns array(
  734.         => "^(\\:)|^(\\))|^(P\\<[^>]+\\>)|^(\\<\\=)|^(\\<\\!)|^(\\=)|^(\\!)|^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  735.         => "^(\\))|^(P\\<[^>]+\\>)|^(\\<\\=)|^(\\<\\!)|^(\\=)|^(\\!)|^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  736.         => "^(P\\<[^>]+\\>)|^(\\<\\=)|^(\\<\\!)|^(\\=)|^(\\!)|^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  737.         => "^(\\<\\=)|^(\\<\\!)|^(\\=)|^(\\!)|^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  738.         => "^(\\<\\!)|^(\\=)|^(\\!)|^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  739.         => "^(\\=)|^(\\!)|^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  740.         => "^(\\!)|^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  741.         => "^(\\>)|^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  742.         => "^(\\(\\?)|^(#[^)]+)|^(R)|^(.)",
  743.         10 => "^(#[^)]+)|^(R)|^(.)",
  744.         11 => "^(R)|^(.)",
  745.         12 => "^(.)",
  746.         13 => "",
  747.     );
  748.  
  749.                     // yymore is needed
  750.                     do {
  751.                         if (!strlen($yy_yymore_patterns[$this->token])) {
  752.                             throw new Exception('cannot do yymore for the last token');
  753.                         }
  754.                         if (preg_match($yy_yymore_patterns[$this->token],
  755.                               substr($this->input$this->N)$yymatches)) {
  756.                             $yymatches array_filter($yymatches'strlen')// remove empty sub-patterns
  757.                             next($yymatches)// skip global match
  758.                             $this->token = key($yymatches)// token number
  759.                             $this->value = current($yymatches)// token value
  760.                             $this->line = substr_count("\n"$this->value);
  761.                         }
  762.                     while ($this->{'yy_r5_' $this->token}(!== null);
  763.                     // accept
  764.                     $this->+= strlen($this->value);
  765.                     $this->line += substr_count("\n"$this->value);
  766.                     return true;
  767.                 }
  768.             else {
  769.                 throw new Exception('Unexpected input at line' $this->line .
  770.                     ': ' $this->input[$this->N]);
  771.             }
  772.             break;
  773.         while (true);
  774.     // end function
  775.  
  776.  
  777.     
  778.  
  779.  
  780.     const ASSERTION 5;
  781.     function yy_r5_1($yy_subpatterns)
  782.     {
  783.  
  784.     $this->token = self::INTERNALOPTIONS;
  785.     }
  786.     function yy_r5_2($yy_subpatterns)
  787.     {
  788.  
  789.     $this->token = self::COLON;
  790.     $this->yybegin(self::INITIAL);
  791.     }
  792.     function yy_r5_3($yy_subpatterns)
  793.     {
  794.  
  795.     $this->token = self::CLOSEPAREN;
  796.     $this->yybegin(self::INITIAL);
  797.     }
  798.     function yy_r5_4($yy_subpatterns)
  799.     {
  800.  
  801.     $this->token = self::PATTERNNAME;
  802.     $this->yybegin(self::INITIAL);
  803.     }
  804.     function yy_r5_5($yy_subpatterns)
  805.     {
  806.  
  807.     $this->token = self::POSITIVELOOKBEHIND;
  808.     $this->yybegin(self::INITIAL);
  809.     }
  810.     function yy_r5_6($yy_subpatterns)
  811.     {
  812.  
  813.     $this->token = self::NEGATIVELOOKBEHIND;
  814.     $this->yybegin(self::INITIAL);
  815.     }
  816.     function yy_r5_7($yy_subpatterns)
  817.     {
  818.  
  819.     $this->token = self::POSITIVELOOKAHEAD;
  820.     $this->yybegin(self::INITIAL);
  821.     }
  822.     function yy_r5_8($yy_subpatterns)
  823.     {
  824.  
  825.     $this->token = self::NEGATIVELOOKAHEAD;
  826.     $this->yybegin(self::INITIAL);
  827.     }
  828.     function yy_r5_9($yy_subpatterns)
  829.     {
  830.  
  831.     $this->token = self::ONCEONLY;
  832.     $this->yybegin(self::INITIAL);
  833.     }
  834.     function yy_r5_10($yy_subpatterns)
  835.     {
  836.  
  837.     $this->token = self::OPENASSERTION;
  838.     }
  839.     function yy_r5_11($yy_subpatterns)
  840.     {
  841.  
  842.     $this->token = self::COMMENT;
  843.     $this->yybegin(self::INITIAL);
  844.     }
  845.     function yy_r5_12($yy_subpatterns)
  846.     {
  847.  
  848.     $this->token = self::RECUR;
  849.     }
  850.     function yy_r5_13($yy_subpatterns)
  851.     {
  852.  
  853.     $this->yybegin(self::INITIAL);
  854.     return true;
  855.     }
  856.  
  857. }

Documentation generated on Fri, 30 Jun 2006 12:30:57 -0400 by phpDocumentor 1.3.0