<?xml version="1.0"?><phpdoc><class name="PhpdocParserRegExp" extends="PhpdocObject" undoc="false" access="private" package="PHPDoc"><file>c:/www/apache/doc2//parser/PhpdocParserRegExp.php</file><doc><author email="ulf.wendel@phpdoc.de">Ulf Wendel</author><inherited src="Array"/><description>This class defines all regular expressions. To make theconfiguration and customization of PHPDoc as simple aspossible I decided to define all regular expressions in one class.From a programming point of view there&amp;apos;s no need to do so.</description><shortdescription>Defines all regular expressions.</shortdescription><version>$Id: $</version></doc><function name="buildComplexRegExps" undoc="false" access="private"><doc><see type="var">$PHP_BASE</see><see type="var">$PHP_COMPLEX</see><see type="var">$C_BASE</see><see type="var">$C_COMPLEX</see><return type="void"/><description>PHPDoc has a small set of basic regular expressions. All complexregular expressions are made out of the basic ones. The compositionin done in this method. Note: every derived class mustcall this method in it&amp;apos;s constructor!</description><shortdescription>Builds complex regular expressions for the parser.</shortdescription></doc></function><variable name="$PHPDOC_TAGS" access="private" type="array">array(&#x0a;														&amp;quot;@parameter&amp;quot;		=&amp;gt; &amp;apos;@param[eter] (object objectname|type) [$varname] [description]&amp;apos;,&#x0a;														&amp;quot;@param&amp;quot; 				=&amp;gt; &amp;apos;@param[eter] (object objectname|type) [$varname] [description]&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@return&amp;quot; 			=&amp;gt; &amp;apos;@return	(object objectname|type) [$varname] [description]&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@access&amp;quot;				=&amp;gt; &amp;apos;@access&amp;apos;,&#x0a;														&amp;quot;@abstract&amp;quot;			=&amp;gt; &amp;apos;@abstract&amp;apos;,&#x0a;														&amp;quot;@static&amp;quot;				=&amp;gt; &amp;apos;@static&amp;apos;,&#x0a;														&amp;quot;@final&amp;quot;				=&amp;gt; &amp;apos;@final&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@throws&amp;quot;				=&amp;gt; &amp;apos;@throws exception [, exception]&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@see&amp;quot;					=&amp;gt; &amp;apos;@see (function()|$varname|(module|class)(function()|$varname)) [, (funtion()|$varname|(module|class)(function()|$varname))]&amp;apos;,&#x0a;														&amp;quot;@link&amp;quot;					=&amp;gt; &amp;apos;@link URL [description]&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@var&amp;quot;					=&amp;gt; &amp;apos;@var 	(object objectname|type) [$varname]&amp;apos;,&#x0a;														&amp;quot;@global&amp;quot;				=&amp;gt; &amp;apos;@global (object objectname|type) $varname [description]&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@constant&amp;quot;			=&amp;gt; &amp;apos;@const[ant] label [description]&amp;apos;,&#x0a;														&amp;quot;@const&amp;quot;				=&amp;gt; &amp;apos;@const[ant] label [description]&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@author&amp;quot;				=&amp;gt; &amp;apos;@author Name [&amp;lt;email&amp;gt;] [, Name [&amp;lt;email&amp;gt;]&amp;apos;,&#x0a;														&amp;quot;@copyright&amp;quot;		=&amp;gt; &amp;apos;@copyright description&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@version&amp;quot;			=&amp;gt; &amp;apos;@version label&amp;apos;,&#x0a;														&amp;quot;@since&amp;quot;				=&amp;gt; &amp;apos;@since label&amp;apos;,&#x0a;&#x0a;														&amp;quot;@deprecated&amp;quot;		=&amp;gt; &amp;apos;@deprec[ated] description&amp;apos;,														&#x0a;														&amp;quot;@deprec&amp;quot;				=&amp;gt; &amp;apos;@deprec[ated] description&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@brother&amp;quot;			=&amp;gt; &amp;apos;@(brother|sister) (function()|$varname)&amp;apos;,&#x0a;														&amp;quot;@sister&amp;quot;				=&amp;gt; &amp;apos;@(brother|sister) (function()|$varname)&amp;apos;,&#x0a;																												&#x0a;														&amp;quot;@include&amp;quot;			=&amp;gt; &amp;apos;@include description&amp;apos;,	&#x0a;														&#x0a;														&amp;quot;@exclude&amp;quot;			=&amp;gt; &amp;apos;@exclude label&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@modulegroup&amp;quot;	=&amp;gt; &amp;apos;@modulegroup label&amp;apos;,&#x0a;														&amp;quot;@module&amp;quot;				=&amp;gt; &amp;apos;@module label&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@package&amp;quot;			=&amp;gt; &amp;apos;@package label&amp;apos;,&#x0a;														&#x0a;														&amp;quot;@magic&amp;quot;				=&amp;gt; &amp;apos;@magic description&amp;apos;,&#x0a;														&amp;quot;@todo&amp;quot;					=&amp;gt; &amp;apos;@todo description&amp;apos;&#x0a;													)<doc><description>... grepping information is really not a parser. Don&amp;apos;tchange the order the tags are listed. If you introducenew tags write the long variant of the tagname (parameter)in front of the shortcut (param).</description><shortdescription>Array of phpdoc tags, indexed by the tagname.</shortdescription></doc></variable><variable name="$C_BASE" access="private" type="array" final="true">array(&#x0a;												#&amp;quot;block&amp;quot;						=&amp;gt; &amp;apos;/\*\*((?:(?!\*).)*(?:\n(?!\s*\*/)\s*\*(?:(?!\*/).)*)*)\*/&amp;apos;,&#x0a;												&amp;quot;module&amp;quot;								=&amp;gt; &amp;quot;[^\s]+&amp;quot;,&#x0a;												&amp;quot;module_separator&amp;quot;			=&amp;gt; &amp;quot;::&amp;quot;,&#x0a;												&amp;quot;module_tags&amp;quot;						=&amp;gt; &amp;quot;(@modulegroup|@module)&amp;quot;,&#x0a;																		&#x0a;												&amp;quot;vartype&amp;quot;								=&amp;gt; &amp;quot;(string|integer|int|long|real|double|float|boolean|bool|mixed|array|object)&amp;quot;,&#x0a;												&amp;quot;access&amp;quot;								=&amp;gt; &amp;quot;(private|public)&amp;quot;&#x0a;											)<doc><see type="function">buildComplexRegExps()</see><see type="var">$C_COMPLEX</see><description>PHPDoc tries to compose all complex regular expressionsfrom a list of basic ones. This array contains all expressionsused grep complex doc comments and the surrounding keywords.</description><shortdescription>Basis regular expressions used to compose complex expressions to grep doc comments.</shortdescription></doc></variable><variable name="$C_COMPLEX" access="private" type="array" final="true">array(															&#x0a;														&amp;quot;objectname_optional&amp;quot;	=&amp;gt; &amp;quot;&amp;quot;,&#x0a;																		&#x0a;														&amp;quot;see_var&amp;quot;							=&amp;gt; &amp;quot;&amp;quot;,&#x0a;														&amp;quot;see_function&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;														&amp;quot;see_moduleclass&amp;quot;			=&amp;gt; &amp;quot;&amp;quot;,&#x0a;														&#x0a;														&amp;quot;module_doc&amp;quot;					=&amp;gt; &amp;quot;&amp;quot;,&#x0a;														&amp;quot;module_tags&amp;quot;					=&amp;gt; &amp;quot;&amp;quot;,&#x0a;														&amp;quot;module_separator&amp;quot;		=&amp;gt; &amp;quot;&amp;quot;,&#x0a;														&amp;quot;module_separator_len&amp;quot;			=&amp;gt; 0,&#x0a;														&amp;quot;module_separator_len_neg&amp;quot;	=&amp;gt; 0&#x0a;														&#x0a;												)<doc><see type="function">buildComplexRegexps()</see><see type="var">$C_BASE</see><description>As with $PHP_COMPLEX all complex expressions are build using basicones in buildComplexRegExps().</description><shortdescription>List of regular expressions used to grep complex doc comments.</shortdescription></doc></variable><variable name="$PHP_BASE" access="private" type="array" final="true">array (&#x0a;&#x0a;													&amp;quot;space&amp;quot;						=&amp;gt; &amp;quot;\s+&amp;quot;,&#x0a;													&amp;quot;space_optional&amp;quot;	=&amp;gt; &amp;quot;\s*&amp;quot;,&#x0a;													&amp;quot;break&amp;quot;						=&amp;gt; &amp;quot;[\n\r]&amp;quot;,&#x0a;													&#x0a;													&amp;quot;php_open_long&amp;quot;		=&amp;gt; &amp;quot;&amp;lt;\?php\s&amp;quot;, # zend_scanner.l use {WHITESPACE} (space in our case) eighter. Might be slightly faster.&#x0a;													&amp;quot;php_open_short&amp;quot;	=&amp;gt; &amp;quot;&amp;lt;\?&amp;quot;,&#x0a;													&amp;quot;php_open_asp&amp;quot;		=&amp;gt; &amp;quot;&amp;lt;%&amp;quot;,&#x0a;													&amp;quot;php_open_short_print&amp;quot; 	=&amp;gt; &amp;quot;&amp;lt;\?=&amp;quot;,&#x0a;													&amp;quot;php_open_asp_print&amp;quot;		=&amp;gt; &amp;quot;&amp;lt;%=&amp;quot;,&#x0a;													&#x0a;													 # do not change the single quotes to double ones&#x0a;													&amp;quot;label&amp;quot;						=&amp;gt; &amp;apos;[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\xzf-\xff]*&amp;apos;, &#x0a;													&amp;quot;use&amp;quot;							=&amp;gt; &amp;quot;(include_once|include|require_once|require)&amp;quot;,&#x0a;													&amp;quot;assignment&amp;quot;			=&amp;gt; &amp;quot;\s*([,=])\s*&amp;quot;,&#x0a;													&#x0a;													&amp;quot;boolean&amp;quot;					=&amp;gt; &amp;quot;(true|false)&amp;quot;,&#x0a;													&#x0a;													&amp;quot;string&amp;quot;					=&amp;gt; &amp;quot;[^\s]+&amp;quot;,&#x0a;													&amp;quot;string_enclosed&amp;quot;	=&amp;gt; &amp;quot;([&amp;apos;\&amp;quot;])(?:\\\\\\1|[^\\1])*?\\1&amp;quot;,&#x0a;&#x0a;													&amp;quot;int_oct&amp;quot;					=&amp;gt; &amp;quot;[+-]?\s*0[0-7]+&amp;quot;,&#x0a;													&amp;quot;int_hex&amp;quot;					=&amp;gt; &amp;quot;[+-]?\s*0[xX][0-9A-Fa-f]+&amp;quot;,&#x0a;													&#x0a;													&amp;quot;float&amp;quot;						=&amp;gt; &amp;quot;[+-]?\s*\d*\.\d+&amp;quot;,&#x0a;													&amp;quot;float_exponent&amp;quot;	=&amp;gt; &amp;quot;[+-]?\s*\d*(?:\.\d+)*[eE][+-]?\d+&amp;quot;,&#x0a;													&#x0a;													&amp;quot;number&amp;quot;					=&amp;gt; &amp;quot;[+-]?\s*\d+&amp;quot;,&#x0a;													&#x0a;													&amp;quot;array&amp;quot;						=&amp;gt; &amp;quot;array\s*\(&amp;quot;,&#x0a;													&amp;quot;empty_array&amp;quot;			=&amp;gt; &amp;quot;array\s*\(\s*\)\s*&amp;quot;&#x0a;												)<doc><see type="var">$PHP_COMPLEX</see><description>PHPDoc tries to compose all complex regular expressionsfrom some basic expressions. This array containsall expressions used to build $PHP_COMPLEX.There&amp;apos;re some differences to the RegExps in zend-scanner.l,e.g. I decided to write &amp;quot;\s+&amp;quot; instead of &amp;quot;[ \n\r\t]+&amp;quot; whichshould be identical as long as perl compatible regularexpressions are used. Another point is that I did not breakdown numbers to LNUM/DNUM.</description><shortdescription>Basic RegExps used to analyse PHP Code.</shortdescription></doc></variable><variable name="$PHP_COMPLEX" access="private" type="array">array (&#x0a;															&amp;quot;varname&amp;quot;					=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;functionname&amp;quot;		=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;classname&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&#x0a;															&amp;quot;php_open_script&amp;quot;	=&amp;gt; &amp;quot;&amp;quot;,&#x0a;													&#x0a;															&amp;quot;var&amp;quot;							=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;undoc_var&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;																			&#x0a;															&amp;quot;function&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;undoc_function&amp;quot;	=&amp;gt; &amp;quot;&amp;quot;,&#x0a;																			&#x0a;															&amp;quot;class&amp;quot;						=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;undoc_class&amp;quot;			=&amp;gt; &amp;quot;&amp;quot;,&#x0a;																			&#x0a;															&amp;quot;class_extends&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;undoc_class_extends&amp;quot;	=&amp;gt; &amp;quot;&amp;quot;,&#x0a;																			&#x0a;															&amp;quot;const&amp;quot;						=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;undoc_const&amp;quot;			=&amp;gt; &amp;quot;&amp;quot;,&#x0a;																			&#x0a;															&amp;quot;use&amp;quot;							=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;undoc_use&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;																		&#x0a;															&amp;quot;argument&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&#x0a;															&amp;quot;type_boolean&amp;quot;		=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&#x0a;															&amp;quot;type_string&amp;quot;						=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;type_string_enclosed&amp;quot;	=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&#x0a;															&amp;quot;type_int_oct&amp;quot;		=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;type_int_hex&amp;quot;		=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&#x0a;															&amp;quot;type_float&amp;quot;			=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;type_float_exponent&amp;quot;	=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&#x0a;															&amp;quot;type_number&amp;quot;			=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&#x0a;															&amp;quot;type_array&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;															&amp;quot;type_empty_array&amp;quot;	=&amp;gt; &amp;quot;&amp;quot;&#x0a;														)<doc><see type="function">buildComplexRegExps()</see><see type="var">$PHP_BASE</see><description>The RegExp of the variable types is slightly changed to thatone in $PHP_BASE, getVariableTypeAndValue() needs this.&amp;quot;undoc_*&amp;quot; is used to grep all keywords those who have a doccomment in front and those without. See getPhodocParagraphs()for more details on this.</description><shortdescription>List of regular expressions used to grep complex php code elements.</shortdescription></doc></variable><variable name="$TAGS" access="private" type="array">array ( &#x0a;											&amp;quot;return&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;, &#x0a;											&amp;quot;var&amp;quot;						=&amp;gt; &amp;quot;&amp;quot;, # @var, @param&#x0a;											&amp;quot;global&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;, &#x0a;											&amp;quot;access&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;, &#x0a;											&#x0a;											&amp;quot;module&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;, # @module, @modulegroup&#x0a;											&#x0a;											&amp;quot;const&amp;quot;					=&amp;gt; &amp;quot;&amp;quot;, # @const, @constant&#x0a;											&#x0a;											&amp;quot;see_var&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;, # @see&#x0a;											&amp;quot;see_function&amp;quot;	=&amp;gt; &amp;quot;&amp;quot;, # @see&#x0a;											&amp;quot;see_class&amp;quot;			=&amp;gt; &amp;quot;&amp;quot;, # @see&#x0a;											&amp;quot;see_module&amp;quot;		=&amp;gt; &amp;quot;&amp;quot;, # @see&#x0a;											&#x0a;											&amp;quot;link&amp;quot;					=&amp;gt; &amp;quot;@([^\s]+)(.*)@is&amp;quot;, # @link&#x0a;											&#x0a;											&amp;quot;brother&amp;quot;				=&amp;gt; &amp;quot;&amp;quot;,&#x0a;											&#x0a;											&amp;quot;author&amp;quot;				=&amp;gt; &amp;quot;&amp;lt;\s*([a-z]([-a-z0-9_.])*@([-a-z0-9_]*\.)+[a-z]{2,})\s*&amp;gt;&amp;quot;, # @author &amp;lt;email&amp;gt; part&#x0a;											&#x0a;											&amp;quot;all&amp;quot;						=&amp;gt; &amp;quot;&amp;quot;	 # list of all known tags&#x0a;										)<doc><description>The array is filled by the constructor.</description><shortdescription>Array of RegExp matching the syntax of several complex tags.</shortdescription></doc></variable><inherited src="PhpdocObject" type="functions"><element>setflagoutput</element><element>out</element><element>nametourl</element><element>outl</element><element>introspection</element></inherited><inherited src="PhpdocObject" type="variables"><element>$err</element><element>$application</element><element>$warn</element><element>$flag_output</element></inherited><path><parent>PhpdocObject</parent></path><baseclass>PhpdocObject</baseclass><subclasses><subclass>PhpdocParserTags</subclass></subclasses></class></phpdoc>
