r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[Parse] Discussion of PARSE dialect

BenBran
6-Jan-2010
[4811]
for completeness in R3 - I tried the lines above:

>> parse "GET /a.html HTTP/1.1" ["get " return to " "]
** Script Error: Invalid argument: ?native?
** Where: halt-view
** Near: parse "GET /a.html HTTP/1.1" ["get " return to " "]

I must be missing something simple
BrianH
6-Jan-2010
[4812]
What version of REBOL are you using? system/version ...
BenBran
6-Jan-2010
[4813]
>> help system
SYSTEM is an object of value:
   version         tuple!    2.7.7.3.1
   build           date!     1-Jan-2010/12:15:27-8:00
   product         word!     View
   core            tuple!    2.7.7
   components      block!    length: 60
BrianH
6-Jan-2010
[4814]
That is R2, not R3.
BenBran
6-Jan-2010
[4815]
doh!
BrianH
6-Jan-2010
[4816]
You were right, it was something simple :)
BenBran
6-Jan-2010
[4817x2]
lol :-)
yes it works perfect in R3. Thanks again.
Graham
14-Jan-2010
[4819]
>> parse [ <tag> ] [ copy t tag! ]
== true
>> t
== [<tag>]

never noticed it made a block! before
ChristianE
14-Jan-2010
[4820x5]
>> parse [ <tag> ] [ set t tag! ]
== true
>> t
== <tag>
There's a difference between COPY and SET in block parsing mode.
From the docs:

SET - set the next value to a variable
COPY - copy the next match sequence to a variable
Good the remember when dealing with "sequences":

>> parse [ <tag> </tag> ] [ copy t [ tag! tag!] ]
== true
>> t
== [<tag> </tag>]
>> parse [ <tag> </tag> ] [ set t [ tag! tag!] ]
== true
>> t
== <tag>
the = to.
Graham
14-Jan-2010
[4825]
I've always used 'set ... not sure why I used 'copy this time!
Graham
29-Jan-2010
[4826x3]
<?xml version="1.0"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Body><SelectResponse 
xmlns="http://sdb.amazonaws.com/doc/2009-04-15/"><SelectResult><Item><Name>2010-01-29T09:54:48.000ZI3s3NjIxRjZERDI1MUY0QzQyMDk4M0JDMzkwMERGOEQxQTVDRDY5MzEwfQ==</Name><Attribute><Name>Subject</Name><Value>hello?</Value></Attribute><Attribute><Name>Userid</Name><Value>Guest</Value></Attribute><Attribute><Name>UTCDate</Name><Value>2010-01-29T09:54:48.000Z</Value></Attribute></Item><Item><Name>2010-01-29T09:58:36.000ZI3swMTZBODg3QjAxNDQ2NEU5OENCNTA3OTc5OTg0Mjc1MTJGQzkxQTc0fQ==</Name><Attribute><Name>Subject</Name><Value>First 
Message</Value></Attribute><Attribute><Name>Userid</Name><Value>Graham</Value></Attribute><Attribute><Name>UTCDate</Name><Value>2010-01-29T09:58:36.000Z</Value></Attribute></Item><Item><Name>2010-01-29T11:06:18.000ZI3tFREFCRUYwNTY4OTdBMzcwODM2NzJGQUE5MzAwRUE3NjYwMTMwMTY5fQ==</Name><Attribute><Name>Subject</Name><Value>Index 
working</Value></Attribute><Attribute><Name>Userid</Name><Value>Graham</Value></Attribute><Attribute><Name>UTCDate</Name><Value>2010-01-29T11:06:18.000Z</Value></Attribute></Item></SelectResult><ResponseMetadata><RequestId>14873461-626a-44bf-2d7d-c1b23694b2e0</RequestId><BoxUsage>0.0000411449</BoxUsage></ResponseMetadata></SelectResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
results: copy []
	parse result [
		thru <SelectResult> 
		some [
			thru <Item> copy item to </Item> (
				?? item

    if parse item [ thru <Name> copy itemid to </Name> thru {<Name>Subject</Name>} 
    thru <Value> copy subject to </Value> thru {<Name>Userid</Name>} 
    thru <Value> copy userid to </Value> thru {<Name>UTCDate</Name>} 
    thru <Value> copy utcdate to </Value> to end ][
					repend results [ utcdate itemid userid subject ]
				]
			)
		]
	]
This parse works fine in R2, but doesn't work in R3 ... I coudn't 
see why last night ... still can't ...
Steeve
29-Jan-2010
[4829x3]
Is that result a block or string ?
because in a string you can't find tag! values
i'm wrong 
T_T
Graham
29-Jan-2010
[4832]
It's a string ...
Steeve
29-Jan-2010
[4833]
but i'm still wrong ;-)
Graham
29-Jan-2010
[4834x2]
Yes, tags are a type of string ...
this is what I get for item 


e>2010-01-29T11:06:18.000ZI3tFREFCRUYwNTY4OTdBMzcwODM2NzJGQUE5MzAwRUE3NjYwMTMwMTY5fQ==</Name><Attribute><Name>Subject</Name><Value>Index 
working</Value></Attribute><Attribute><Name>Userid</Name><Value>Graham</Value></Attribute><Attribute><Name>UTCDate</Name><Value>2010-01-29T11:06:18.000Z</Value></Attribute>
Steeve
29-Jan-2010
[4836x2]
>> parse "<a><item>" [thru <a> ??]
end!: "item>"
== false
a bug
Graham
29-Jan-2010
[4838]
I'm not familiar with that ... what should it say?
Steeve
29-Jan-2010
[4839x2]
It should say:
>> parse "<a><item>" [thru <a> ??]
end!: "<item>"
== false
parsing thru a tag eat one more char
Graham
29-Jan-2010
[4841]
Ah .. ?? is a new debugging function
Steeve
29-Jan-2010
[4842]
yep
Graham
29-Jan-2010
[4843x2]
Should have known about it last night!  Would have saved me sometime 
:(
Well, this looks like an unreported bug ...
Steeve
29-Jan-2010
[4845]
exactly
Graham
29-Jan-2010
[4846]
Shall you or I curecode it?
Steeve
29-Jan-2010
[4847x2]
you
;-)
Graham
29-Jan-2010
[4849x2]
okey dokey
Now I know I can't use r3 for parsing xml .... :(

http://www.curecode.org/rebol3/ticket.rsp?id=1449
Steeve
29-Jan-2010
[4851]
you can, just replace <tag> by a real string "<tag>"
Graham
29-Jan-2010
[4852x4]
ugly !  :)
Point taken ...
Is there any likelihood of the parse enhancements making it to r2? 
 Anyone know?
( without the bugs of course )
Steeve
29-Jan-2010
[4856]
0%
BrianH
29-Jan-2010
[4857x2]
And there is a great likelihood of the bugs being fixed in R3. And 
there aren't many in PARSE, just that tag bug afaik.
Graham, I deleted bug #1449 since it was already reported as #682. 
See also #854 and #1160 (and #10, which was incorrectly "fixed").
Graham
29-Jan-2010
[4859]
your response says it was fixed ...
BrianH
29-Jan-2010
[4860]
Partially - it used to be worse. That's why it's marked a "problem".