Hello Jessie,

Tuesday, November 14, 2006, 5:00:42 AM, you wrote:

> What does everyone else think? Are functions/constants inside namespaces 
> really that critical?

> Anyways, I just thought of a possible solution to the namespace 
> separator issue, and if it's doable, then the double colon (::) can even 
> be used and no conflicts would occur. It seems the biggest problem with 
> handling namespaces is determining if a symbol is a class or namespace 
> at compile-time. I am no expert in flex/bison, but I was thinking that a 
>   state can be used, such as LOOKING_FOR_CLASS_OR_NAMESPACE, which will 
> return either a T_CLASS_NAME or T_NAMESPACE_NAME token depending on 
> whether the symbol is known to be a class or namespace. The user will 
> add either a "using" or "import" statement before the use of the symbol, 
> and this will allow the parser to know what that symbol is in the 
> compilation phase. As an example:


> // BEGIN CODE
> using namespace PEAR::File;
> $items = File::Find::glob( '!.*\.php$!', $dir, 'perl' );
> // END CODE


> The first statement will add an entry into a hashtable (used during 
> compilation) indicating that "PEAR", "PEAR::File", and "File" are 
> namespaces ("File" will be imported in the current file only). When 
> "File::Find::glob" is parsed, the compiler already knows that "File" is 
> a namespace, so "Find" must be a class inside that namespace, and "glob" 
> must be a static method. With this, functions and constants can easily 
> be added inside namespaces, as the "using" or "import" statement will 
> indicate to the parser which portion of the qualified name is a namespace.

> Is this feasible in flex/bison? Let me know if anything needs clarification.

Short: no

Long: Please stop confusion here. We will get namespace innwith either ":::"
or "\" depending on who is going to implement it and what otherissues that
one will encounter. Later we may decide based on that implementation whether
it might be possible to use a different seperator. Btw, ifI wereto implement
namespacesupport today i would go with "\" as that is easier to translate to
a directory/file name in an __autoload function. While yesturday people
nearly convinced me (during the last conferences) that ":::" is closer to
the class/member seperator "::".

best regards
marcus


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to