Author: chromatic
Date: Sun Jun 10 22:40:19 2007
New Revision: 18916

Modified:
   trunk/languages/perl6/src/parser/grammar_rules.pg

Log:
[Perl 6] Parse module names with version numbers and optional blocks.

Modified: trunk/languages/perl6/src/parser/grammar_rules.pg
==============================================================================
--- trunk/languages/perl6/src/parser/grammar_rules.pg   (original)
+++ trunk/languages/perl6/src/parser/grammar_rules.pg   Sun Jun 10 22:40:19 2007
@@ -194,14 +194,13 @@
 token scope_declarator { [ my | our ] }
 token class_declarator { [ class | grammar | module | role | package ] }
 
-token class_block {
+rule class_block {
     <scope_declarator>?
     <class_declarator>
-    $<name>:=[ <'::'>? <name> | <?null> ] ;
-    <block>
+    $<name>:=[ <'::'>? <name> [ - <version_number> ]? | <?null> ]
+    [ ; | <block> ]
 }
 
-
 ## XXX: These are just placeholder regexes for demonstration,
 ## they certainly need to be expanded to be more complete.
 
@@ -209,6 +208,7 @@
 token variable {  \$! | \$/ | \$_ | <sigil> <twigil>? <name> }
 token sigil { <[EMAIL PROTECTED]&]> | <'::'> }
 token name { <ident> [ <'::'> <ident> ]* }
+token version_number { \d+ \. \d+ \. \d+ }
 
 token integer {
     | 0 [ b <[01]>+           [ _ <[01]>+ ]*

Reply via email to