* @since 1.2
 */
/**#@+
 * {@link parserDescParser} token constants
 */
/** when < > is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_P', 601);
/** when < > is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_P', 701);
/** when \n\n is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_DOUBLECR', 602);
/** when \n\n is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_DOUBLECR', 702);
/** when < >,<  tag.  If so, it will switch
     * into a mode of parsing out paragraphs by   instead
     * of a double line-break
     *
     * It also removes extra whitespace
     * @uses doSimpleList()
     */
    function defaultHandler($word, $pevent)
    {
        $context = $this->getContext();
        if ($context != 'normal') $this->setContext('normal');
        if ($this->p_vars['start'] && is_string($word) && strtolower($word) == ' ')
        {
            $this->parse_Ps = true;
        }
        if (is_string($word) && $this->checkEventPush($word, $pevent)) return;
//        if (!isset($this->parse_Ps) || !$this->parse_Ps)
        {
            if (!is_object($word) && ($word == ' ' && $this->p_vars['last_word'] == ' ')) return;
            if ($pevent == PARSER_EVENT_NOEVENTS)
            {
                if ($this->doSimpleList($word)) return;
            }
            $this->addText($word);
        }
    }
    
    /**
     * Retrieve the current top-level tag to add text into
     * @uses $_context
     */
    function getContext()
    {
        array_push($this->_context,$a = array_pop($this->_context));
        return $a;
    }
    
    /**
     * Pop a context off of the context stack
     * @uses $_context
     */
    function dropContext()
    {
        array_pop($this->_context);
        if (count($this->_context) == 0)
        $this->_context = array('normal');
    }
    
    /**
     * @uses $_context
     * @param string context name
     */
    function setContext($context)
    {
        array_push($this->_context,$context);
    }
    
    /**
     * add input as text to the current paragraph or list
     * @param string|parserInlineTag
     */
    function addText($text)
    {
        $context = $this->getContext();
        if ($context == 'list')
        {
//            debug('aded to '.$context);
            $this->p_vars['list_item'][$this->p_vars['list_count']]->add($text);
        } elseif ($context != 'normal')
        {
//            debug('added to '.$context);
            $this->p_vars[$context]->add($text);
        } else
        {
//            debug('added to normal ');
            $indtype = $this->p_vars['indtype'];
            if (!isset($this->pars[$this->p_vars['curpar']]))
                $this->pars[$this->p_vars['curpar']] = new $indtype;
            $this->pars[$this->p_vars['curpar']]->add($text);
        }
    }
    
    /**#@-*/
    /**#@+
     * @access private
     * @param string|parserInlineTag token from the ObjectWordParser
     * @param integer parser event from {@link ParserDescCleanup.inc}
     */
    /**
     * Handles special case where a description needs the text "> is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_CODE', 600);
/** when <');
    }
    
    /**
     * Handle "<> is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_CODE', 700);
/** when <>>
     */
    function handleEscapeCode($word, $pevent)
    {
        $this->p_vars['event_stack']->popEvent();
        $this->addText('> is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_PRE', 603);
/** when <> is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_PRE', 703);
/** when <>/<
> is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_LIST', 604);
/** when <
>/<
> is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_LIST', 704);
/** when <> is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_B', 605);
/** when <> is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_B', 705);
/** when <> is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_I', 606);
/** when <> is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_I', 706);
/** when <
> is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_BR', 607);
/** when <
> is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_BR', 707);
/** when the << potential escape for tags is found in a desc */
define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE',608);
/** when the << potential escape for tags is found in a desc */
define('PHPDOCUMENTOR_PDP_STATE_ESCAPE',708);
/** when << /pre>> is found in a <><
> section */
define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE',609);
/** when << /pre>> is found in a <><
> section */
define('PHPDOCUMENTOR_PDP_STATE_ESCAPE_PRE',709);
/** when << /code>> is found in a <><> section  */
define('PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE',610);
/** when << /code>> is found in a <><> section  */
define('PHPDOCUMENTOR_PDP_STATE_ESCAPE_CODE',710);
/** when <> is found in a desc  */
define('PHPDOCUMENTOR_PDP_EVENT_VAR',611);
/** when <> is found in a desc  */
define('PHPDOCUMENTOR_PDP_STATE_VAR',711);
/** when <> is found in a desc  */
define('PHPDOCUMENTOR_PDP_EVENT_SAMP',612);
/** when <> is found in a desc  */
define('PHPDOCUMENTOR_PDP_STATE_SAMP',712);
/** when <> is found in a desc  */
define('PHPDOCUMENTOR_PDP_EVENT_KBD',613);
/** when <> is found in a desc  */
define('PHPDOCUMENTOR_PDP_STATE_KBD',713);
/** when a simple list is found in a desc
 *
 * like
 * 
 *  o item 1
 *  o item 2
 * 
 */
define('PHPDOCUMENTOR_PDP_EVENT_SIMLIST',614);
/** when a simple list is found in a desc
 *
 * like
 * 
 *  o item 1
 *  o item 2
 * 
 */
define('PHPDOCUMENTOR_PDP_STATE_SIMLIST',714);
/**#@-*/
/**
* Like WordParser but designed to handle an array with strings and
* {@link parserInlineTag}s
* @package phpDocumentor
* @subpackage WordParsers
* @author Greg Beaver >,<
>>
     */
    function handleEscapePre($word, $pevent)
    {
        $this->p_vars['event_stack']->popEvent();
        $this->addText('');
    }
    
    /**
     * Just like {@link handleEscape}, except the only valid escape is
     * <<>,<>,<
>,<
>> in a DocBlock will parse out as <>, instead
     * of being parsed as markup.
     */
    function handleEscape($word, $pevent)
    {
        $this->p_vars['event_stack']->popEvent();
        if (!in_array($word, $this->tokens[PHPDOCUMENTOR_PDP_STATE_ESCAPE]))
        {
            if ($word == '<')
            {
                $this->addText($word);
                $this->wp->backupPos($word.$word);
            } else
            $this->wp->backupPos($word);
            return;
        }
        $this->addText('<'.str_replace('>>','>',$word));
    }
    
    /**
     * Just like {@link handleEscape}, except the only valid escape is
     * <<
>"
     * Add a new {@link parserBr}
     * @uses addText()
     */
    function handleBr($word, $pevent)
    {
        if (is_string($word) && $this->checkEventPop($word, $pevent))
        {
            $this->addText(new parserBr);
        }
    }
    
    /**
     * Handles simple lists
     *
     * phpEdit has an ingenious facility to handle simple lists used in a
     * DocBlock like this:
     *
     * - item 1
     * - item 2
     * - item 3
     *
     * The DocBlock is:
     * 
     * * - item 1
     * * - item 2
     * * - item 3
     * 
     * This function converts these simple lists into the parserList class
     * @param boolean true if this is the first list item in the list
     */
    function handleSimpleList($word, $pevent, $start = false)
    {
        if (is_object($word) && $this->p_flags['in_item'])
        {
            $this->p_vars['list_item'][0]->add($word);
            return;
        }
        if (is_string($word) && $this->checkEventPush($word, $pevent))
        {
            $this->p_flags['in_event'] = true;
            return;
        }
        $ltrimword = @substr($word, @strpos($word, ltrim($word)));
        $is_valid = false;
        if (strlen(trim($word)) == 0)
        {
            if ($this->wp->nextIsObjectOrNonNL())
            {
                $is_valid = true;
            }
        }
        if ($word == "\n" && is_string($this->p_vars['last_word'])
            && $this->p_vars['last_word']{strlen($this->p_vars['last_word']) - 1}
                == "\n")
        {
            if ($this->p_flags['in_item'])
            {
                $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]);
                unset($this->p_vars['list_item'][0]);
                $this->setContext('normal');
                $this->p_flags['simplelist'] = false;
                $this->addText($this->p_vars['lists'][0]);
                unset($this->p_vars['lists']);
                unset($this->p_vars['last_list']);
                $this->wp->backuppos($word);
                $this->p_vars['event_stack']->popEvent();
                $this->p_flags['in_item'] = false;
//                debug('end of list 3');
                return;
            } else
            {
                $this->wp->backuppos($word);
                $this->p_vars['event_stack']->popEvent();
                $this->p_flags['in_item'] = false;
//                debug('not a list 2');
                return;
            }
        }
        $start_list = $this->getStartList($word);
        if (substr($ltrimword,0,strlen($start_list)) != $start_list 
             || $this->p_flags['in_event'] || is_object($this->p_vars['last_word']))
        {
            if (((strlen($this->p_vars['whitespace']) + 1) < strlen(substr($word,0,strpos($word, $ltrimword))))
                   || $word == "\n"
                   || $is_valid
                   || $this->p_flags['in_event']
                   || (is_object($this->p_vars['last_word']) && $this->p_flags['in_item']))
            {
                $this->p_vars['list_item'][0]->add($word);
                $this->resetStartList($start_list);
                $this->p_flags['in_event'] = false;
//                debug('middle of list');
            } else
            {
                if ($this->p_flags['in_item'])
                {
                    $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]);
                    unset($this->p_vars['list_item'][0]);
                    $this->setContext('normal');
                    $this->p_flags['simplelist'] = false;
                    $this->addText($this->p_vars['lists'][0]);
                    unset($this->p_vars['lists']);
                    unset($this->p_vars['last_list']);
                    $this->wp->backuppos($word);
                    $this->p_vars['event_stack']->popEvent();
                    $this->p_flags['in_item'] = false;
//                    debug('end of list 1');
                    return;
                } else
                {
                    $this->wp->backuppos($word);
                    $this->p_vars['event_stack']->popEvent();
                    $this->p_flags['in_item'] = false;
//                    debug('not a list');
                    return;
                }
            }
        } else
        {
            if ($this->p_vars['whitespace'] != substr($word,0,strpos($word, $start_list)))
            { // if the whitespace is greater than that preceding the list
              // delimiter, it's a multi-line list item
                $this->setContext('normal');
                $this->p_flags['simplelist'] = false;
                $this->addText($this->p_vars['lists'][0]);
                unset($this->p_vars['lists']);
                $this->wp->backuppos($word);
                $this->p_vars['event_stack']->popEvent();
                unset($this->p_vars['last_list']);
                $this->p_flags['in_item'] = false;
//                debug('end of list 2');
                return;
            } else
            {
                if ($this->p_flags['in_item'])
                {
                    // end of a list item, add it to the list
                    $this->p_vars['lists'][0]->addItem($this->p_vars['list_item'][0]);
                    unset($this->p_vars['list_item'][0]);
                }
//                debug('next list item');
                $this->p_vars['list_item'][0] = new parserStringWithInlineTags;
                $this->p_vars['list_item'][0]->add(ltrim(substr($ltrimword,strlen($start_list))));
                $this->p_flags['in_item'] = true;
            }
        }
    }
    /**#@-*/
    /**
     * Get the next list marker
     *
     * In unordered lists, this will be something like "o", "-"
     *
     * In ordered lists, this will be either the number "3", "5" or "3.", "5."
     * @return string text of the next list marker to look for
     * @param string current word from the parser
     * @access private
     */
    function getStartList($word)
    {
        // unordered, return the first marker found
        if (!$this->p_flags['orderedlist']) return $this->p_vars['start_list'];
        if (isset($this->p_vars['last_list']))
        {
            $this->p_vars['save_list'] = $this->p_vars['last_list'];
            $next = $this->p_vars['last_list'];
            // increment to next list number, convert to string
            if (substr($this->p_vars['start_list'], strlen($this->p_vars['start_list']) - 1) == '.')
                $next = (substr($next, 0, strpos($next,'.')) + 1) . '.';
            else
                $next = ($next + 1) . '';
//                debug("next is '$next'");
            if ($this->p_vars['whitespace'] == substr($word,0,strpos($word, $next)))
                return $this->p_vars['last_list'] = $next;
            // the next number is not in this word, so return but don't save
            return $next;
        } else
        {
            $this->p_vars['last_list'] = $this->p_vars['start_list'];
            return $this->p_vars['start_list'];
        }
    }
    
    /**
     * Set the next list marker to the current list marker
     *
     * In ordered lists, this will ensure that the next number returned is the
     * right number
     * @param string token for next list marker
     * @access private
     */
    function resetStartList($start)
    {
        if (!isset($this->p_vars['save_list'])) return false;
        $this->p_vars['last_list'] = $this->p_vars['save_list'];
    }
    
    /**#@+
     * @access private
     * @param string|parserInlineTag token from the ObjectWordParser
     * @param integer parser event from {@link ParserDescCleanup.inc}
     */
    /**
     * Handles <><> blocks
     */
    function handleCode($word, $pevent)
    {
        if (!isset($this->p_vars['my_code']))
        {
            $this->setContext('my_code');
            $this->p_vars['my_code'] = new parserCode;
        }
        if (is_string($word) && $this->checkEventPush($word, $pevent)) return;
        if (is_object($word) || strtolower($word) != '') $this->p_vars['my_code']->add($word);
        if (is_string($word))
        {
            if ($this->checkEventPop($word,$pevent))
            {
                $this->dropContext();
                $this->addText($this->p_vars['my_code']);
                unset($this->p_vars['my_code']);
            }
        }
    }
    
    /**
     * Handles <><> blocks */ function handlePre($word, $pevent) { if (!isset($this->p_vars['my_pre'])) { $this->setContext('my_pre'); $this->p_vars['my_pre'] = new parserPre; } if (is_string($word) && $this->checkEventPush($word, $pevent)) return; if (is_object($word) || strtolower($word) != '') $this->p_vars['my_pre']->add($word); if (is_string($word)) { if ($this->checkEventPop($word,$pevent)) { $this->dropContext(); $this->addText($this->p_vars['my_pre']); unset($this->p_vars['my_pre']); } } } /** * Handles <><> blocks */ function handleB($word, $pevent) { if (!isset($this->p_vars['my_b'])) { $this->setContext('my_b'); $this->p_vars['my_b'] = new parserB; } if (is_string($word)) { if ($this->checkEventPop($word,$pevent)) { $this->dropContext(); $this->addText($this->p_vars['my_b']); unset($this->p_vars['my_b']); } else { $this->p_vars['my_b']->add($word); } } else $this->p_vars['my_b']->add($word); } /** * Handles <><> blocks */ function handleI($word, $pevent) { if (!isset($this->p_vars['my_i'])) { $this->p_vars['my_i'] = new parserI; $this->setContext('my_i'); } if (is_string($word)) { if ($this->checkEventPop($word,$pevent)) { $this->dropContext(); $this->addText($this->p_vars['my_i']); unset($this->p_vars['my_i']); } else { $this->p_vars['my_i']->add($word); } } else $this->p_vars['my_i']->add($word); } /** * Handles <><> blocks */ function handleVar($word, $pevent) { if (!isset($this->p_vars['my_var'])) { $this->setContext('my_var'); $this->p_vars['my_var'] = new parserDescVar; } if (is_string($word)) { if ($this->checkEventPop($word,$pevent)) { $this->dropContext(); $this->addText($this->p_vars['my_var']); unset($this->p_vars['my_var']); } else { $this->p_vars['my_var']->add($word); } } else $this->p_vars['my_var']->add($word); } /** * Handles <><> blocks */ function handleSamp($word, $pevent) { if (!isset($this->p_vars['my_samp'])) { $this->setContext('my_samp'); $this->p_vars['my_samp'] = new parserSamp; } if (is_string($word)) { if ($this->checkEventPop($word,$pevent)) { $this->dropContext(); $this->addText($this->p_vars['my_samp']); unset($this->p_vars['my_samp']); } else { $this->p_vars['my_samp']->add($word); } } else $this->p_vars['my_samp']->add($word); } /** * Handles <><> blocks */ function handleKbd($word, $pevent) { if (!isset($this->p_vars['my_kbd'])) { $this->setContext('my_kbd'); $this->p_vars['my_kbd'] = new parserKbd; } if (is_string($word)) { if ($this->checkEventPop($word,$pevent)) { $this->dropContext(); $this->addText($this->p_vars['my_kbd']); unset($this->p_vars['my_kbd']); } else { $this->p_vars['my_kbd']->add($word); } } else $this->p_vars['my_kbd']->add($word); } /** * Handles <
><
> blocks * * Note that the only time <> will be interpreted as delimiting a * paragraph is if it is the first thing in the description. */ function handleP($word, $pevent) { if (!isset($this->parse_Ps)) $this->parse_Ps = false; if (is_string($word)) { if (is_string($word) && $this->checkEventPush($word, $pevent)) return; } if (!$this->parse_Ps) { $this->p_vars['event_stack']->popEvent(); if (!is_object($word) && strtolower($this->p_vars['last_word']) == '
') $this->addText('
'); $this->addText($word); return; } if ($word == "\n") $word = " "; if (is_string($word)) { if ($this->checkEventPop($word, $pevent)) { $this->p_vars['curpar']++; return; } // if no closing tag, pretend there was one if (!is_object($word) && strtolower($word) == '
' && $this->parse_Ps) { $this->p_vars['curpar']++; return; } } if ($this->p_vars['start']) { $this->addText($word); } else {// if the
is not at the beginning of the desc, then it is not // possible to parse into paragraphs using this tag if ($word == ' ' && $this->p_vars['last_word'] == ' ') return; $this->addText($word); } } /** * Handles \n\n as a paragraph marker * @uses doSimpleList() */ function handleDoubleCR($word, $pevent) { $this->p_vars['event_stack']->popEvent(); if ($word == "\n") { // only use this if
 isn't being used
            if ((!isset($this->parse_Ps) || !$this->parse_Ps))
            {
                if ($this->p_vars['last_word'] == "\n")
                {
                    $this->p_vars['curpar']++;
                    $this->parse_Ps = false;
                } else
                {
                    if (is_string($word) && !$this->checkEventPush($word, $pevent))
                    {
                        if ($word == ' ' && $this->p_vars['last_word'] == ' ') return;
                        $this->addText($word);
                    }
                }
            } else
            {
                if (is_string($word) && !$this->checkEventPush($word, $pevent))
                {
                    if ($word == ' ' && $this->p_vars['last_word'] == ' ') return;
                    $this->addText($word);
                }
            }
        } else
        {
            if ($this->p_vars['last_word'] == "\n")
            {
                if ((!isset($this->parse_Ps) || !$this->parse_Ps))
                {
                    $this->addText(' ');
                }
            }
            if (is_string($word) && !($e = $this->checkEventPush($word, $pevent)))
            {
                if ($word == ' ' && $this->p_vars['last_word'] == ' ') return;
                if ($this->doSimpleList($word)) return;
                $this->addText($word);
            }
        }
    }
    
    /**#@-*/
    /**
     * Return a simple list, if found
     *
     * This helper function extracts a simple list beginning with any of
     * 'o','-'.'#','+','0','1','0.','1.' and starts parsing it.
     * @param string line that may contain a simple list
     * @return boolean true if a list is found, false otherwise
     */
    function doSimpleList($word)
    {
        if ($this->p_flags['in_event']) return true;
        if (is_object($word)) return false;
        $ltrimword = ltrim($word);
        if ((strlen($ltrimword) != strlen($word))
             && strlen($ltrimword) > 1
             && ((in_array($ltrimword{0},array('o','-','1','0','#','+')) && $ltrimword{1} == ' '))
                 || ((strlen($ltrimword) >= 2) && (in_array(substr($ltrimword,0,2),array('1.','0.')) && $ltrimword{2} == ' ')))
        {
            // save the whitespace for comparison
            $this->p_vars['whitespace'] = substr($word,0,strlen($word) - strlen($ltrimword));
            $this->p_vars['start_list'] = $ltrimword{0};
            if ($this->p_vars['start_list'] != '1' && $this->p_vars['start_list'] != '1.' &&
                $this->p_vars['start_list'] != '0' && $this->p_vars['start_list'] != '0.')
            {
                $this->p_flags['orderedlist'] = false;
            } else
            {
                if (substr($ltrimword,0,2) == '1.')
                {
                    $this->p_vars['start_list'] = '1.';
                }
                $this->p_flags['orderedlist'] = true;
            }
            $this->p_vars['event_stack']->pushEvent(PHPDOCUMENTOR_PDP_EVENT_SIMLIST);
            $this->setContext('list');
            $this->p_flags['simplelist'] = true;
            $this->p_vars['lists'][0] = new parserList($this->p_flags['orderedlist']);
            $this->p_vars['list_count'] = 0;
            $this->handleSimpleList($word, PHPDOCUMENTOR_PDP_EVENT_SIMLIST, true);
            return true;
        }
        return false;
    }
    /**
    * setup the parser tokens, and the pushEvent/popEvent arrays
    * @see $tokens, $pushEvent, $popEvent
    * @param boolean determines whether to allow paragraph parsing
    * @global boolean used to determine whether to slow things down or not by
    * eliminating whitespace from comments
    */
    
    function setupStates($sdesc)
    {
        $this->p_flags['in_item'] = false;
        $this->p_flags['in_event'] = false;
        $this->p_flags['simplelist'] = false;
        $this->_context = array('normal');
        $this->tokens[STATE_NOEVENTS]            = array("\n", " ";
            $this->tokens[STATE_NOEVENTS][] = "", "", "
", "
", 
                                                         "", "", '', '', '', "
tokens[STATE_NOEVENTS][] = "
","","\n","","","","","
", '<<',
                                                                '', '', '');
        if (PHPDOCUMENTOR_KILL_WHITESPACE) $this->tokens[PHPDOCUMENTOR_PDP_STATE_P][] = ' ';
        $this->tokens[PHPDOCUMENTOR_PDP_STATE_CODE]        = array("
", '<>');
        $this->tokens[PHPDOCUMENTOR_PDP_STATE_PRE]        = array("", '<>');
        $this->tokens[PHPDOCUMENTOR_PDP_STATE_LIST]        = array("",""); ########################## $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_BR] = array(">","/>"); ########################## $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_P] = array( "
', '', ''); $this->tokens[PHPDOCUMENTOR_PDP_STATE_DOUBLECR] = array("\n","","
","
","","","",">' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE, ); $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_PRE] = array("
","", '', '', '', '<<'); $this->tokens[PHPDOCUMENTOR_PDP_STATE_SIMLIST] = array("\n",'', '', '','','', '', '","","', '
tokens[PHPDOCUMENTOR_PDP_STATE_B] = array("","\n","","","
","
', '', ''); $this->tokens[PHPDOCUMENTOR_PDP_STATE_KBD] = array("","\n","', ''); $this->tokens[PHPDOCUMENTOR_PDP_STATE_VAR] = array("","","
","","","
', '","\n",""); ########################## $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_PRE] = array( '<","","
","","","
', '', ''); $this->tokens[PHPDOCUMENTOR_PDP_STATE_SAMP] = array("","\n","'); $this->tokens[PHPDOCUMENTOR_PDP_STATE_I] = array("","","
","","","
', '', '","\n","","","","
","","
', '', ''); $this->tokens[PHPDOCUMENTOR_PDP_STATE_BR] = array(">","/>"); $this->tokens[PHPDOCUMENTOR_PDP_STATE_ESCAPE] = array('code>>', '/code>>', 'pre>>', '/pre>>', 'b>>', '/b>>', 'i>>', '/i>>', 'ol>>', '/ol>>', 'ul>>', '/ul>>', 'br>>', 'br />>', 'p>>', '/p>>', 'samp>>', '/samp>>', 'kbd>>', '/kbd>>', 'var>>', '/var>>'); if (PHPDOCUMENTOR_KILL_WHITESPACE) $this->tokens[PHPDOCUMENTOR_PDP_STATE_DOUBLECR][] = ' '; // For each event word to event mapings $this->pushEvent[PARSER_EVENT_NOEVENTS] = array( "" => PHPDOCUMENTOR_PDP_EVENT_CODE, ">' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE, ); $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_CODE] = array("" => PHPDOCUMENTOR_PDP_EVENT_PRE, "" => PHPDOCUMENTOR_PDP_EVENT_P, "" => PHPDOCUMENTOR_PDP_EVENT_VAR, "" => PHPDOCUMENTOR_PDP_EVENT_SAMP, "" => PHPDOCUMENTOR_PDP_EVENT_KBD, "
" => PHPDOCUMENTOR_PDP_EVENT_LIST, "
" => PHPDOCUMENTOR_PDP_EVENT_LIST, "" => PHPDOCUMENTOR_PDP_EVENT_B, "" => PHPDOCUMENTOR_PDP_EVENT_I, "
PHPDOCUMENTOR_PDP_EVENT_BR, "\n" => PHPDOCUMENTOR_PDP_EVENT_DOUBLECR, '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE, ); ########################## $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_CODE] = array( '<
" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                "" => PHPDOCUMENTOR_PDP_EVENT_PRE,
                "" => PHPDOCUMENTOR_PDP_EVENT_B,
                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
         
        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_P] = array("");
##########################
        
        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_LIST] =
            array(
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                "" => PHPDOCUMENTOR_PDP_EVENT_B,
                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                "" => PHPDOCUMENTOR_PDP_EVENT_PRE,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
        
        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_LIST] = array("
","
");
##########################
        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_SIMLIST] = 
            array(
                ""    => PHPDOCUMENTOR_PDP_EVENT_CODE,
                ""    => PHPDOCUMENTOR_PDP_EVENT_PRE,
                "" => PHPDOCUMENTOR_PDP_EVENT_P,
                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                "" => PHPDOCUMENTOR_PDP_EVENT_B,
                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
##########################
        
        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_DOUBLECR] =
            array(
                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "
" => PHPDOCUMENTOR_PDP_EVENT_PRE,
                "" => PHPDOCUMENTOR_PDP_EVENT_B,
                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                "" => PHPDOCUMENTOR_PDP_EVENT_P,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
        
##########################
        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_B] =
            array(
                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "
" => PHPDOCUMENTOR_PDP_EVENT_PRE,
                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                '' => PHPDOCUMENTOR_PDP_EVENT_I,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
         
        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_B] = array("
");
##########################
        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_I] =
            array(
                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "
" => PHPDOCUMENTOR_PDP_EVENT_PRE,
                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                '' => PHPDOCUMENTOR_PDP_EVENT_B,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
         
        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_I] = array("
");
##########################
        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_VAR] =
            array(
                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "
" => PHPDOCUMENTOR_PDP_EVENT_PRE,
                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                '' => PHPDOCUMENTOR_PDP_EVENT_B,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
         
        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_VAR] = array("
");
##########################
        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_SAMP] =
            array(
                "" => PHPDOCUMENTOR_PDP_EVENT_CODE,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "
" => PHPDOCUMENTOR_PDP_EVENT_PRE,
                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                "" => PHPDOCUMENTOR_PDP_EVENT_KBD,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                '' => PHPDOCUMENTOR_PDP_EVENT_B,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
         
        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_SAMP] = array("");
##########################
        $this->pushEvent[PHPDOCUMENTOR_PDP_EVENT_KBD] =
            array(
                " PHPDOCUMENTOR_PDP_EVENT_CODE,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "" => PHPDOCUMENTOR_PDP_EVENT_LIST,
                "
 PHPDOCUMENTOR_PDP_EVENT_PRE,
                "" => PHPDOCUMENTOR_PDP_EVENT_VAR,
                "" => PHPDOCUMENTOR_PDP_EVENT_SAMP,
                "" => PHPDOCUMENTOR_PDP_EVENT_I,
                "
 PHPDOCUMENTOR_PDP_EVENT_BR,
                '' => PHPDOCUMENTOR_PDP_EVENT_B,
                '<<' => PHPDOCUMENTOR_PDP_EVENT_ESCAPE,
            );
         
        $this->popEvent[PHPDOCUMENTOR_PDP_EVENT_KBD] = array("
");
    }
    
    function getParserEventName ($value)
    {    
        $lookup = array(
            PARSER_EVENT_NOEVENTS         => "PARSER_EVENT_NOEVENTS",
            PHPDOCUMENTOR_PDP_EVENT_CODE        => "PHPDOCUMENTOR_PDP_EVENT_CODE",
            PHPDOCUMENTOR_PDP_EVENT_P        => "PHPDOCUMENTOR_PDP_EVENT_P",
            PHPDOCUMENTOR_PDP_EVENT_B        => "PHPDOCUMENTOR_PDP_EVENT_B",
            PHPDOCUMENTOR_PDP_EVENT_I        => "PHPDOCUMENTOR_PDP_EVENT_I",
            PHPDOCUMENTOR_PDP_EVENT_BR        => "PHPDOCUMENTOR_PDP_EVENT_BR",
            PHPDOCUMENTOR_PDP_EVENT_VAR        => "PHPDOCUMENTOR_PDP_EVENT_VAR",
            PHPDOCUMENTOR_PDP_EVENT_SAMP        => "PHPDOCUMENTOR_PDP_EVENT_SAMP",
            PHPDOCUMENTOR_PDP_EVENT_KBD        => "PHPDOCUMENTOR_PDP_EVENT_KBD",
            PHPDOCUMENTOR_PDP_EVENT_ESCAPE        => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE",
            PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE        => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE_CODE",
            PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE        => "PHPDOCUMENTOR_PDP_EVENT_ESCAPE_PRE",
            PHPDOCUMENTOR_PDP_EVENT_DOUBLECR        => "PHPDOCUMENTOR_PDP_EVENT_DOUBLECR",
            PHPDOCUMENTOR_PDP_EVENT_LIST    => "PHPDOCUMENTOR_PDP_EVENT_LIST",
            PHPDOCUMENTOR_PDP_EVENT_PRE => "PHPDOCUMENTOR_PDP_EVENT_PRE",
            PHPDOCUMENTOR_PDP_EVENT_SIMLIST => "PHPDOCUMENTOR_PDP_EVENT_SIMLIST",
        );
        if (isset($lookup[$value]))
        return $lookup[$value];
        else return $value;
    }
}
?>