> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > On Behalf Of Brett Handley > Sent: Saturday, August 03, 2002 2:04 AM > To: [EMAIL PROTECTED] > Subject: [REBOL] Re: Strange parsing behavior > I run your code and I get an error straight away: > > ** Script Error: string1 has no value > ** Where: rejoin > ** Near: mold name: get name > > So you probably had string1 set before you ran your test code.
Hi, hmm... I used the link-client to test it, or there was a problem with line breaks? > > rule1: [start: copy string1 [to " - " (?? string1) | to newline] copy string2 to end] > > To start, lets just look at the first COPY in your Rule1. The > variable is string1, the pattern is > [to " - " (?? string1) | to newline] So far we agree ;-) > Rule1 looks bad to me because you are asking parse to COPY > the input stream matched by the pattern into string1, but > then from inside the pattern (and therefore before the > pattern completes) you try to print string1. Well, this dependes how you expect parse to work. The rule [to " - " (?? string1) | to newline] is a choice and Rebol parse uses a one-shot evaluation while parsing, this means, it executes a rule as long as possible starting with the first rule from several choices. As soon as the rule, in this case to " - " could be parsed successfully, the rule block ends. I expect parse to be in sync with the progress of the parsing. So, after parse did to " - " I expect the copy operation as terminated because internally it look like this: Copy string to " - " which can be executed successfully. So the print should succeed. The question is what is the trigger for the copy: You say it's the end of the rule block (lat trigger) and I would expect as soon as copying makes sense (early trigger). From a debugging point of view an early trigger is much more useful, further it would allow to create context-sensitive grammars, as you could chnage parsing rules on the fly. Robert -- To unsubscribe from this list, please send an email to [EMAIL PROTECTED] with "unsubscribe" in the subject, without the quotes.
