[REBOL] Re: Yet another parse problem or bug?
From: joel:neely:fedex at: 31-Oct-2001 6:26
Hi, Cyphre,
I reported some oddities with PARSE and quotation marks quite a while
back, but never received any explanation. AFAICT it's a bug, since
it violates the reasonable (IMHO) interpretation of what RCUG says
about the behavior of PARSE/ALL.
One problem (I haven't done exhuastive testing) appears to relate to
the specific case of an embedded quotation mark immediately following
a delimiter, as in your example's line 2, and the following:
>> test2: "line 1#^"line 2^"# ^"line 3^"#line 4"
== {line 1#"line 2"# "line 3"#line 4}
>> parse/all test2 "#"
== ["line 1" "line 2" { "line 3"} "line 4"]
which indicates to me that the bug is not specific to {} nor "^/".
I ran into this issue trying to work with comma-delimited ASCII files,
as produced by certain nameless spreadsheets. ;-) Please see
http://www.escribe.com/internet/rebol/m2097.html
for the code I came up with as a solution to the PARSE/ALL behavior
in that context.
Incidentally, what appears to be the same bug in a different guise
afflicts the content of SYSTEM/SCRIPT/ARGS, as shown by this test:
8<----------------------------------------
REBOL []
blort: system/script/args
source blort
blort: system/options/args
source blort
ask "Done?"
8<----------------------------------------
which, when run by
rebol ssargs.r foo "blab yakk woot!" combo.r -t10 /nope=0
produces the console output
blort: "foo blab yakk woot! combo.r -t10 /nope=0"
blort: ["foo" "blab yakk woot!" "combo.r" "-t10" "/nope=0"]
Done?
Destroying the quotation marks when presenting all args as a single
string, of course, eliminates the scripts ability to distinguish
string args from file names, options, etc...
HTH!
-jn-
Cyphre wrote:
> Hello all,
>
> try this:
>
> --------snip----------
> test: {line 1
> "line 2"
> "line 3"
> line 4}
> parse/all test "^/"
> ----------snip---------
>
> the result is:
>
> ["line 1" "line 2" { "line 3"} "line 4"]
>
> why the result doesnot looks like this:
>
> ["line 1" {"line 2"} { "line 3"} "line 4"]
>
> I don't want to use:
>
> parse/all test [some [copy t to "^/" (probe t) skip]]
>
> Maybe bug in parse?
> Anyone?
>
> regards,
>
> Cyphre
>
> ---
> Odchozí zpráva neobsahuje viry.
> Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
> Verze: 6.0.282 / Virová báze: 150 - datum vydání: 25.9.2001
>
> --
> To unsubscribe from this list, please send an email to
> [rebol-request--rebol--com] with "unsubscribe" in the
> subject, without the quotes.
--
; sub REBOL {}; sub head ($) {@_[0]}
REBOL []
# despam: func [e] [replace replace/all e ":" "." "#" "@"]
; sub despam {my ($e) = @_; $e =~ tr/:#/.@/; return "\n$e"}
print head reverse despam "moc:xedef#yleen:leoj" ;