Author: bernhard
Date: Mon Jan 19 05:13:00 2009
New Revision: 35749

Modified:
   trunk/languages/pipp/docs/pipp.pod
   trunk/languages/pipp/src/pct/grammar.pg

Log:
[Pipp]mark leading backslash in 'name', leading backslash is not allowed
in namespace declaration

Modified: trunk/languages/pipp/docs/pipp.pod
==============================================================================
--- trunk/languages/pipp/docs/pipp.pod  (original)
+++ trunk/languages/pipp/docs/pipp.pod  Mon Jan 19 05:13:00 2009
@@ -31,8 +31,6 @@
 
 =item Only bracketed version of namespaces. No check for unnamespaced code.
 
-=item A leading backslash is allowed in namespace declarations.
-
 =item 'const' outside a declared namespace is allowed.
 
 =back

Modified: trunk/languages/pipp/src/pct/grammar.pg
==============================================================================
--- trunk/languages/pipp/src/pct/grammar.pg     (original)
+++ trunk/languages/pipp/src/pct/grammar.pg     Mon Jan 19 05:13:00 2009
@@ -253,14 +253,17 @@
 
 token method_name              { <ident> }
 
-token namespace_name           { <.name> }
+token namespace_name           { <ns_component>* <ident> }
 
 token name {
-    | <ident> <morename>*    # no leading backslash
-    | <morename>+            # leading backslash
+    <leading_backslash=ns_sep>?           # a leading backslash is optional, 
but significant
+    <ns_component>*                       # namespace
+    <ident>                               # identifier is required
 }
 
-token morename                 { '\\' <ident> }
+token ns_sep                   { '\\' }   # yes, PHP 5.3 uses backslash as the 
namespace separator
+
+token ns_component             { <ident> <.ns_sep> }
 
 token var_name                 { '$' <ident> }
 

Reply via email to