Author: moritz
Date: 2009-05-27 09:47:44 +0200 (Wed, 27 May 2009)
New Revision: 26941

Modified:
   docs/Perl6/Spec/S05-regex.pod
Log:
[S05] document action stubs

Modified: docs/Perl6/Spec/S05-regex.pod
===================================================================
--- docs/Perl6/Spec/S05-regex.pod       2009-05-26 23:59:45 UTC (rev 26940)
+++ docs/Perl6/Spec/S05-regex.pod       2009-05-27 07:47:44 UTC (rev 26941)
@@ -3714,6 +3714,30 @@
 
     token funnylang { '{' [ :lang($funnylang.unbalanced('}')) <expr> ] '}' }
 
+=item *
+
+A string can be matched against a grammar by calling C<.parse> on the grammar,
+and optionally pass an I<action> object to that grammar:
+
+    MyGrammar.parse($str, :action($action-object))
+
+Whenever a closure within the grammar returns a C<Whatever> object, the
+grammar engine tries to call a method of the same name as the name of the
+current regex on the action object, passing along the current Match object as
+the first positional argument.
+
+   grammar Integer {
+       token TOP {
+           \d+ {*}
+       }
+   }
+   class Twice {
+       method TOP($/) {
+           make 2 * $/;
+       }
+   }
+   Integer.parse('21', :action(Twice.new)).ast      # 42
+
 =back
 
 =head1 Syntactic categories

Reply via email to