AltME: Parse

Messages

Rondon
I was trying to make a patch to web-to-plain.r from rebol.org

Tomc
@Rondon   would love to see what you come up with, web-to-plain.r  changes web encoded chars to accii plaintext so emitting an "&amp" in place of an "&" in the input would be counter to its nature.  maybe describe the problem a bit more, what the input is and what needs to be changed in the output.  Just looking at it now (after a decade) I think I would at least change the call from parse to parse/all

Endo
How do I use NOT in PARSE in R2?
;On R3
>> parse "a" [not "b" skip]
== true
On R2?
Pekr
Is 'not availabe in terms of R2 parse at all?
Endo
Better asking; how do I do on R2 something like:
PARSE/all "abc" ["a" not "x" "c"]  ;==true
@Perk: No, unfortunately not.
>> parse "x" [not "a"]
** Script Error: Invalid argument: ?native?
Endo
Normally I won't compare with one char, so using a complemented charset is not useful for me.
not-a: complement charset "a"
parse/all "x" [not-a] ; == true
Geomol
Won't this work?
>> not-x: complement charset "x"
>> parse "abc" ["a" not-x "c"]
== true
>> parse "axc" ["a" not-x "c"]
== false
Pekr
Geomol just beat me to that :-)
Endo
:-) I beat you both :P
Geomol
Why is complemented charset not useful?
Endo
Because I need to NOT a word.
Something like:
>> parse/all "this" [some ["this" (print "ok" halt) | skip] ]
ok
>> parse/all "this" [some ["that" (print "ok" halt) | skip] ]
== true
But I don't know how to stop PARSE in the first example.
Instead of HALTing.
Geomol
to end 1 skip
Which will always return false, I think.
or just: to end skip
Endo
Sorryi I confused I think, how do I write "except this one" like rule.
>> not-four: ["four" to end skip]
== ["four" to end skip]
>> parse/all "one two three" ["one " not-four " three"]
== false
Geomol
>> parse/all "one two three" ["one " [not-four | to " "] " three"]
== true
Or use block parsing, if that's an option.
argh :)
Doesn't work.

Last message posted 45 weeks ago.