Recursive Parse
Please consider: i: ["[1]" "[2]"] rule: [thru "[" keep to "]" | rule] parse i [collect [into rule]] == [#"1"] but would like to get [#"1" #"2"] What is wrong?
posted by: lib0 5-Dec-2018/9:46:35-8:00
I presume this is using Red's PARSE (from COLLECT usage). It seems one of your problems here is that you are not fully matching the string--you are going TO "]" but not going through it. However, I can't quite see why you are using a recursive rule in the first place. It seems to me you could get to your result as follows: rule: [thru "[" keep to "]" skip] ; will match each string parse i [collect [some into rule]]
posted by: Chris 6-Dec-2018/13:30:24-8:00
Another way to write it that would be recursive (I don't see this as beneficial vs. using SOME) would be: rule: [into [thru "[" keep to "]" skip] opt rule] parse i [collect rule]
posted by: Chris 6-Dec-2018/14:13:18-8:00
Thanks Chris. This was a minimal example, I'll try to see if recursive is necessary or not for the bigger picture.
posted by: lib0 11-Dec-2018/6:44:13-8:00
|