Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[svn:perl6-synopsis] r13570 - doc/trunk/design/syn

5 views
Skip to first unread message

la...@cvs.perl.org

unread,
Feb 5, 2007, 5:26:24 PM2/5/07
to perl6-l...@perl.org
Author: larry
Date: Mon Feb 5 14:26:23 2007
New Revision: 13570

Modified:
doc/trunk/design/syn/S03.pod
doc/trunk/design/syn/S05.pod

Log:
categories now allow multiple dispatch via longest-token rule
added :<symbol> syntax to rules and tokens
seems a bit odd to call list-associative operators "binary"


Modified: doc/trunk/design/syn/S03.pod
==============================================================================
--- doc/trunk/design/syn/S03.pod (original)
+++ doc/trunk/design/syn/S03.pod Mon Feb 5 14:26:23 2007
@@ -38,8 +38,8 @@
Junctive and (all) &
Junctive or (any) | ^
Named unary rand sleep abs
- Nonchaining binary but does <=> leg cmp .. ..^ ^.. ^..^ ff fff
- Chaining binary != == < <= > >= eq ne lt le gt ge ~~ === eqv !eqv
+ Nonchaining infix but does <=> leg cmp .. ..^ ^.. ^..^ ff fff
+ Chaining infix != == < <= > >= eq ne lt le gt ge ~~ === eqv !eqv
Tight and &&
Tight or || ^^ // min max
Conditional ?? !!

Modified: doc/trunk/design/syn/S05.pod
==============================================================================
--- doc/trunk/design/syn/S05.pod (original)
+++ doc/trunk/design/syn/S05.pod Mon Feb 5 14:26:23 2007
@@ -14,9 +14,9 @@
Maintainer: Patrick Michaud <pmic...@pobox.com> and
Larry Wall <la...@wall.org>
Date: 24 Jun 2002
- Last Modified: 31 Jan 2007
+ Last Modified: 5 Feb 2007
Number: 5
- Version: 49
+ Version: 50

This document summarizes Apocalypse 5, which is about the new regex
syntax. We now try to call them I<regex> rather than "regular
@@ -395,6 +395,23 @@
m/:foo{xxx}/ Parses as :foo {xxx}
m/:foo<xxx>/ Parses as :foo <xxx>

+If the key of the pair is null, however, it is treated as a "symbol"
+declaration:
+
+ :<*> Match * symbol
+ :<[> <EXPR> :<]> Match bracketed expression as symbol :<[ ]>
+ :['<','>'] Match empty <> as circumfix symbol
+ :(&infix) Match any symbol matched by the infix category
+
+The components of a symbol declaration are matched literally, but
+the list of such symbols is gathered up when the rule is parsed and
+returned as the C<.symbol> property of the rule. (The C<.category>
+property should also be available for such rules, since these
+properties are used to form the eventual user-visible name of the
+operator being parsed.)
+
+The C<:()> form is conjectured to be useful in generating hyperoperators.
+
=item *

User-defined modifiers will be possible:
@@ -653,6 +670,26 @@

=item *

+Alternatively, if you predeclare a category, you can write multiple
+rules for the same category, differentiated only by the symbol they
+match:
+
+ category sigil;
+ token sigil { :<$> }
+ token sigil { :<@> }
+ token sigil { :<@@> }
+ token sigil { :<%> }
+ token sigil { :<&> }
+ token sigil { :<::> }
+
+This can be viewed as a form of multiple dispatch, except that it's
+based on longest-token matching rather than signature matcing. The
+advantage of writing it this way is that it's easy to add additional
+rules to the same category in a derived grammar. All of them will
+be matched in parallel when you try to match C<< /<sigil>/ >>.
+
+=item *
+
An interpolated hash matches the longest possible token. The match
fails if no entry matches. (A C<""> key will match anywhere, provided
no longer key matches.)

Brandon S. Allbery KF8NH

unread,
Feb 5, 2007, 4:29:17 PM2/5/07
to perl6-l...@perl.org

On Feb 5, 2007, at 17:26 , la...@cvs.perl.org wrote:

> +This can be viewed as a form of multiple dispatch, except that it's
> +based on longest-token matching rather than signature matcing. The

"matcing"?

--
brandon s. allbery [linux,solaris,freebsd,perl] all...@kf8nh.com
system administrator [openafs,heimdal,too many hats] all...@ece.cmu.edu
electrical and computer engineering, carnegie mellon university KF8NH

0 new messages