Author: particle
Date: 2009-01-08 02:57:51 +0100 (Thu, 08 Jan 2009)
New Revision: 24801

[S19] preliminary musings on metasyntactic options

Modified: docs/Perl6/Spec/S19-commandline.pod
--- docs/Perl6/Spec/S19-commandline.pod 2009-01-07 23:12:41 UTC (rev 24800)
+++ docs/Perl6/Spec/S19-commandline.pod 2009-01-08 01:57:51 UTC (rev 24801)
@@ -372,53 +372,30 @@
-=head1 Run-time System
+=head1 Metasyntactic Options
-{{TODO total rewrite needed}}
+Metasyntactic options are a subset of delimited options used to pass arguments
+to an underlying component of Perl. Perl itself does not parse these options,
+but makes them available to run-time components via the C<%+META-ARGS> context
-The run-time system delimited option (C<++RTS ... ++/RTS> or
-C<++RTS=string ... ++/RTS=string>) allows options to be passed to an underlying
-component of Perl. Perl itself does not parse these options, but makes them
-available to run-time components.
+Standard in Perl 6 are three underlying components, C<CMD>, C<PARSER>,
+and C<DEBUGGER>.  Implementations may expose other components via this
+interface, so consult the documentation for your Perl 6 implementation.
-[Note that with my proposed system you can still nest without the artificial =:
-    ++RTS ++GC -generational ++/GC ++/RTS
+{{TODO more description and examples}}
-The C<=string> variation allows for disabmiguation when the run-time system
-also allows the parsing of an option named C<++RTS>. For example,
-C<perl ++RTS=outer -a :b +C --RTS foo bar ++/RTS=outer>
-makes sure the run-time system receives C<-a :b +C --RTS foo bar>.
+  On command line...                   Subsystem gets...
+   ++X a -b  ++/X                      a -b
-Additionally, some implementations may use this variation to pass arguments
-to particular subsystems. For example, Rakudo Perl may choose to implement
-C<perl ++RTS=parrot --runcore=gc-debug -t 7 ++/RTS=parrot ++RTS=PGE 
--disable-keepall --optimize ++/RTS=PGE>
-to mean C<--runcore=gc-debug -t 7> gets passed to parrot, and
-C<--disable-keepall --optimize> gets passed to PGE.
+  # Nested options
+  +++X a -b   ++X -c ++/X -d e +++/X   a -b ++X -c ++/X -d e
-[perl ++PARROT --runcore=gc-debug -t 7 ++/PARROT ++PGE --disable-keepall 
--optimize ++/PGE>
+  # More than once
+   ++X a -b  ++/X -c  ++X -d e  ++/X   a -b -d e
+  +++X a -b +++/X -c  ++X -d e  ++/X   a -b -d e
-{{ -jg
-should certain string prefixes or perhaps uppercase strings be reserved
-for this purpose?
-[doesn't seem very necessary, if we make sure ++ has its own namespace.  
-that namespace is quite barren.  we wouldn't even necessarily need to enforce 
-    perl ++parrot --runcore=gc-debug -t 7 ++/parrot ++pge --disable-keepall 
--optimize ++/pge
-is just about as readable, especially if written:
-    perl ++parrot --runcore=gc-debug -t 7 ++/parrot \
-        ++pge --disable-keepall --optimize ++/pge \
-        foo bar baz
-or some such.]
 =head1 Environment Variables
 Environment variables may be used to the same effect as command-line

Reply via email to