Front page | perl.perl6.language |
Postings from April 2006
[svn:perl6-synopsis] r8631 - doc/trunk/design/syn
From:
larry
Date:
April 10, 2006 13:23
Subject:
[svn:perl6-synopsis] r8631 - doc/trunk/design/syn
Message ID:
20060410202252.C2411CB9EC@x12.develooper.com
Author: larry
Date: Mon Apr 10 13:22:51 2006
New Revision: 8631
Modified:
doc/trunk/design/syn/S02.pod
Log:
Clarifications suggested by Nick++ and Daniel++.
Also pilfered the q[[[ ... ]]] multibracket mechanism from pod.
Modified: doc/trunk/design/syn/S02.pod
==============================================================================
--- doc/trunk/design/syn/S02.pod (original)
+++ doc/trunk/design/syn/S02.pod Mon Apr 10 13:22:51 2006
@@ -46,6 +46,15 @@
so you are free to use any whitespace anywhere that whitespace makes sense.
Comments always count as whitespace.
+=item *
+
+For some syntactic purposes, Perl distinguishes bracketing characters
+from non-bracketing. Bracketing characters are defined as any Unicode
+characters with either bidirectional mirrorings or Ps/Pe properties.
+(In practice, though, you're safest using matching characters with
+Ps/Pe properties, though ASCII angle brackets are a notable exception,
+since they're bidirectional but not in the Ps/Pe set.)
+
=back
=head1 Molecules
@@ -80,7 +89,7 @@
=item *
Embedded comments are supported as a variant on quoting syntax, introduced
-by C<#> plus any user-selected bracketing characters (including Unicode):
+by C<#> plus any user-selected bracket characters (see definition above):
say #( embedded comment ) "hello, world!";
@@ -91,7 +100,27 @@
」.say;
There must be no space between the # and the opening bracket character.
-Brackets may be nested following the same policy as ordinary quote brackets.
+(There may be the I<appearance> of space for some double-wide
+characters, however, such as the corner quotes above.) Brackets may
+be nested following the same policy as ordinary quote brackets.
+
+=item *
+
+For all quoting constructs that use user-selected brackets, multiple,
+adjacent, identical opening brackets must always be matched by
+an equal number of adjacent closing brackets. Use of two or more
+brackets disables bracket counting within the quoted text and merely
+scans for the closing set of brackets. Hence this comment legally
+contains unmatched brackets and even an unmatched C<{{>:
+
+ #{{
+ Comment contains unmatched { and { { { { and {{ and } and } } but not:
+ }}
+
+Note however that bare circumfix or postcircumfix C<<< <<...>> >>> is
+not a user-selected bracket, but the ASCII variant of the C<< «...» >>
+interpolating word list. Only C<#> and the C<q>-style quoters (including
+C<m>, C<s>, C<tr>, and C<rx>) enable subsequent user-selected brackets.
=item *
@@ -113,7 +142,7 @@
$object.#{ foo }.say
reduce to a "long dot" rather than the range operator. Valid ways to
-insert a line break into a sequence of methods calls include:
+insert a line break into a sequence of method calls include:
$object. # comment
.say
@@ -157,6 +186,7 @@
$x. .++
$x.#( comment ).++
+ $x.#((( comment ))).++
$x.
.++
@@ -178,7 +208,7 @@
].++
A consequence of the postfix rule is that (except when delimiting a
-a quote or terminating a "long dot") a dot with whitespace in front
+quote or terminating a "long dot") a dot with whitespace in front
of it is always considered a method call on C<$_> where a term is
expected. If a term is not expected at this point, it is a syntax
error. (Unless, of course, there is an infix operator of that name
@@ -547,7 +577,7 @@
Whitespace is not allowed before the parens, but there is a
corresponding C<.()> operator, plus the "long dot" forms that allow
-you to insert optional whitespace and commentsbetween dots:
+you to insert optional whitespace and comments between dots:
&foo. .($arg1, $arg2);
&foo.#[
-
[svn:perl6-synopsis] r8631 - doc/trunk/design/syn
by larry