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

World: r3wp

[Parse] Discussion of PARSE dialect

BrianH
14-Jan-2011
[5433]
Btw, if you are using PARSE for incremental parsing, watch out for 
this: http://issue.cc/r3/1787
shadwolf
14-Jan-2011
[5434]
what is the equivalent in R3  of disarm ?
BrianH
14-Jan-2011
[5435x2]
Nothing, it's unnecessary in R3.
You have to DO an error explicitly to trigger it. Otherwise, you 
can just reference it directly as if it were an object.
shadwolf
14-Jan-2011
[5437]
value: disarm :value 
 how i translate that ?
Steeve
14-Jan-2011
[5438]
you  don't need to, just use the /error refinemeent with transcode.
>> transcode/next/error
and you get an error object if any
Sunanda
14-Jan-2011
[5439]
[!REBOL3 Parse group now exists for specific R3 Parse discussions]
Steeve
14-Jan-2011
[5440]
ok thx
shadwolf
14-Jan-2011
[5441x3]
steeve it's in the colorize function code of area tc ...
either error? :value [
                        value: disarm :value
how do I adapt that ?
BrianH
14-Jan-2011
[5444]
value: disarm :value 
Just get rid of the line.
shadwolf
14-Jan-2011
[5445x2]
ok ...
and this how i use transcode in it ? instead of load/next here ? 
>> error? set/any [value end] try [load/next start]
Steeve
14-Jan-2011
[5447]
Shad, I will do it if you wait a little
shadwolf
14-Jan-2011
[5448x2]
I can do it now either way i need to understand the way R3 handle 
things
since the disarm is gone this like don't work anymore either value/arg2/1
BrianH
14-Jan-2011
[5450]
It depends on the circumstances. Once an error is triggered it can't 
be referred to again until it is caught by TRY, which disarms it.
Oldes
15-Jan-2011
[5451x2]
You don't need disarm in R3:

>> if error? set/any 'err try [1 / 0][ probe err true]
make error! [
    code: 400
    type: 'Math
    id: 'zero-divide
    arg1: none
    arg2: none
    arg3: none
    near: [/ 0]
    where: [/ try]
]
== true
Do we need the set/any or is enough just:
	if error? err: try [1 / 0][ probe err true]
TomBon
15-Feb-2011
[5453x3]
how to copy a parsed stream into a object instead a string var?
this fails
parse page [thru <tag1>  copy obj-buffer/result   to <tag2>]
** Script Error: Invalid argument: obj-buffer/result
ok, looks like this is working.


parse page [thru <tag1>  copy a  to <tag2> (obj-buffer/result : copy 
a)]
Pekr
22-Feb-2011
[5456]
Common parse patterns request - http://www.rebol.com/article/0508.html
james_nak
22-Feb-2011
[5457]
Thanks Pekr for drawing that to my attention.
Gregg
26-Feb-2011
[5458]
If it's a patterns page, it shouldn't be R3 specific. If patterns 
require different implementations in R2 and R3, those can be filled 
in, or stubbed out with a note as to why it is either not needed 
or not worth the effort in one version or the other.
BrianH
26-Feb-2011
[5459x3]
Every pattern should have an R2 and R3 version, with explanations.
Also, every new R3 operation should have an R2 equivalent in the 
pattern list. The parse proposals page can be mined for examples.
IIRC there's only one new R3 op that doesn't have an R2 equivalent, 
but it might not be implemented yet. Let me check.
Gregg
26-Feb-2011
[5462]
I just didn't want to remove the R3-only comments without some discussion, 
in case there was a reason for them being there.
BrianH
26-Feb-2011
[5463]
Yup, agreed. Just checked, LIMIT, the one proposal with no R2 equivalent 
hasn't been implemented yet.
Geocaching
11-Mar-2011
[5464x2]
Hello
Hello, I am struggling to build a parser of equation. The idea is 
a function who would take sth like "SQRT(1-x^2)/(1-x)^3" and return 
a block of rebol code: [divide square-root subtract 1 power x 2 power 
subtract 1 x 3].
Anyone has done it already?
Gregg
11-Mar-2011
[5466]
I know Gabriele has done something along those lines, and I'm sure 
others have as well. I don't know of any that return REBOL code. 
Can you be more specific about what problems you're having?
Ladislav
11-Mar-2011
[5467x2]
Geocachi, see

http://www.fm.tul.cz/~ladislav/rebol/evaluate.r
(can return Rebol code)
Geocaching
13-Mar-2011
[5469]
Thanks ladislav... but I end up with my own implementation...  http://www.rebol.org/view-script.r?script=parse-equation.r
But I will check the your implementation to see how it differs :)
Geocaching
14-Mar-2011
[5470]
Hello, I put a new version of my parse-equation.r script on rebol.org: 
the parser engine is now completed and finalized. I improved the 
recursive implementation to make the code much more readable, understandable 
and elegant. Future improvements should be now limited to adding 
new math functions and a syntax error handling to return usefull 
error messages to the user when she/he makes a syntax error in the 
equation.  http://www.rebol.org/view-script.r?script=parse-equation.r
jocko
14-Mar-2011
[5471]
very nice work !
Geocaching
14-Mar-2011
[5472]
Thanks... just uploaded a new file on rebol.org... I mistakenly put 
a old one :)
sqlab
14-Mar-2011
[5473]
this does not work with signed numbers as in "1 + -2"
Geocaching
14-Mar-2011
[5474x4]
indeed, not yet implemented... in the meantime use "1 - 2" instead
And i am not sure how to implement signed numbers... Usinfg the minus 
sign introduces a level of complexiy I want to avaoid in the code. 
I might decide to force the use of a function like neg()... I am 
still thinking about it...
actually, i found a quite straightforward way to handle signed numbers 
:) i will post later today (for now, I am going to ski... shusss!!!!)
Hello sqlab... Signed numbers and signed sub-expression are now properly 
handled :)
>> parse-equation "+(1+-x)**-sqrt(-1--x)"

== [power add 1.0 negate x negate square-root subtract -1.0 negate 
x]

Thanks for pointing my attention to this issue.

http://www.rebol.org/view-script.r?script=parse-equation.r
Endo
15-Mar-2011
[5478x2]
Very nice script. ^ character can also be added as power operator 
just like **. As in some languages ^ is power operator.
Oh and English comments in the source code please, if possible :)
Ladislav
15-Mar-2011
[5480]
Just a terminological note: the strings you convert to REBOL expressions 
are not "mathematical equations". They are just mathematical expressions.
GrahamC
15-Mar-2011
[5481]
an equation has an = sign in the expression
Ladislav
15-Mar-2011
[5482]
BTW, there is an error in associativity:

>> parse-equation "3-3-3"
== [subtract 3.0 subtract 3.0 3.0]