World: r3wp
[Parse] Discussion of PARSE dialect
older newer | first last |
eFishAnt 22-Nov-2008 [3233] | The problem is if you have a string of Javascript which uses {} inside, then it is hard to get REBOL to make a string of Javascript that has {} inside. |
Sunanda 22-Nov-2008 [3234] | Replace "{" with to-char 0 then put it back afterwards? (Assuming to-char 0 does not occur in your string)? I've done that sort of thing before to get around parse limitations (whether the limitation is in 'parse or my understanding of it) |
Oldes 22-Nov-2008 [3235] | what about escaping? |
eFishAnt 22-Nov-2008 [3236] | so ^{ is what you mean by escaping? |
Oldes 22-Nov-2008 [3237] | yes |
eFishAnt 22-Nov-2008 [3238] | that's the old XON/XOFF sw handshaking trick. So you mean to add ^ in the Javascript, and then wrapping it with {} won't cause a script error? |
Oldes 22-Nov-2008 [3239x2] | You want to write JS in Rebol console? |
>> s: {a^/{b}c^{d^}"e"} == {a {b}c{d}"e"} | |
eFishAnt 22-Nov-2008 [3241x4] | no, I am parsing it automatically...the console I was just testing, but that makes the problem worse, methinks |
I think you meant this (or at least I would have wanted you to mean this): >> s: {a^{b^}c^{d^}"e"} == {a{b}c{d}"e"} | |
that still doesn't cut the mustard for me...but can be useful for part of it. to-string 4838f{gmgmg{ ;this doesn't work because REBOL doesn't know what datatype 4838f{gmgmg{ is, but I don't want REBOL to know that. I want REBOL to make it into a string. | |
to-string/raw or to-string/force could be a useful refinement so that I could write parse like this: print parse/all to-string/force ;alksjdf;alsjdflk;{""""}}}}} parse-rules ;I think this would be a VERY useful thing. | |
Oldes 22-Nov-2008 [3245] | I don't understand how it could work like |
eFishAnt 22-Nov-2008 [3246] | it would need a terminator pattern to know when to stop it print parse/all to-string/force ;alksjdf;alsjdflk;{""""}}}}}terminate parse-rules ;I think this would be a VERY useful thing. |
Oldes 22-Nov-2008 [3247x3] | you mean something like that http://en.wikipedia.org/wiki/HEREDOC ? That could be useful. |
but that's not parse related, the Rebol lexer should be improved to do that. | |
we can try to ask Carl | |
eFishAnt 22-Nov-2008 [3250x4] | It is strongly related...for sure. One of my requirements in a good OS which is not done yet is to NEVER lose anything I type, EVER. |
That page of Wiki is very good to beg my case, thanks! | |
I remember another cool console that someone did in a web page that was very slick...sorry, my mind associates things that it shouldn't...my parser is too massively parallel...;-) | |
It's like closing the loop on Chris's make-doc-anywhere...but REBOL can be the most elegant here for that Heredoc. | |
BrianH 22-Nov-2008 [3254x2] | eFishAnt, the {} nesting rules only apply to strings entered in {}, not "". They are also only a REBOL syntax trick. Strings that you construct or read from somewhere don't have any special escaping rules or syntax. |
REBOL doesn't lose what you type, but if what you are typing is treated as REBOL syntax, then it is interpreted as such, not lost. | |
Robert 23-Nov-2008 [3256x2] | I have a problem with sub-rule parsing I have: myrules: [ any [ set src path! set des path! (?? src ?? des) | 'keyword into [ ... ] ] ] If the input is a/1 a/2 mykeyword a/1 a/2 Only the first paths are printed. Why this? I thought the ANY rule keeps going on unti the end. |
I think it has something to do with INTO not return true. | |
Oldes 23-Nov-2008 [3258] | The INTO is still just a proposal http://www.rebol.net/wiki/Parse_Project#INTO |
Anton 23-Nov-2008 [3259] | Robert, your rule steps INTO the second a/1, and then, I suppose, fails to reach the end of it. Show us the INTO rule, and we will tell you what is wrong with it. PARSE will treat the path a/1 like the block [a 1] eg: >> parse [a/1][into [here: (print mold here) 'a 1 1 1]] [a 1] == true (You also wrote 'keyword in your rules, but 'mykeyword in your input. I'm hoping that was just a typo.) |
BrianH 23-Nov-2008 [3260] | INTO is not a proposal, the proposal is to extend INTO to string types, possibly with a type check. |
eFishAnt 23-Nov-2008 [3261] | Thanks for all the helps on parse...I have my new platform working 100% as of this morning. The labor of over a year of technology...and the code keeps getting smaller and faster. 100% REBOL. It's all dialects. |
Pekr 24-Nov-2008 [3262] | eFish - what is your new platform about? Still an IOS, or anything new? Once new rebol.com site is done, we need your success stories :-) |
Brock 24-Nov-2008 [3263x2] | I've been hoping for these publicly for years... but you won't get them. Competitive advantage, and you have to respect that. Although, if the companies were left nameless and so was the author, then maybe he could atleast outline the concept that was involved or the problems that were overcome. |
The impact wouldn't be as big, but it would definitely hope show the industrial strength of Rebol. | |
amacleod 24-Nov-2008 [3265] | 100% rebol platform? What are we talking about here? |
eFishAnt 24-Nov-2008 [3266x2] | I have another month or so before deployment. Still lots of busy work, mostly more parse rules. I probably shouldn't say much yet, but I was excited after a weekend of breakthroughs, and anyway, I wanted people to know I am even more heavily invested in REBOL than ever. |
The {^}^{^}^{^}} problem went away by thinking about it differently, so now Javascript doesn't bite me any more... | |
Steeve 24-Nov-2008 [3268x2] | some hints ? |
or u just arousing us | |
eFishAnt 24-Nov-2008 [3270] | a month or few and I should be ready to say more. I just got too excited...;-) |
Steeve 24-Nov-2008 [3271] | shame on u ;-) |
Davide 3-Dec-2008 [3272] | How can I parse into a paren! ? I've tried: parse [(a b)] [paren! into [word! word!]] but It doesn't work |
Maarten 3-Dec-2008 [3273x3] | >> data: [( a b )] == [(a b)] >> parse data [ into [set w word! set v word!] (print [ v w])] b a == true |
Silly formatting on macbook paste, but you get the idea. Leave the paren! match out of your rule: | |
i.e rule: [ into [ set v word! set w word!] (print [ v w])] | |
Davide 3-Dec-2008 [3276x2] | Ok, the paren! consume the input, but how can I parse only paren! ? your rule work for (a b) and for [a b] >> parse [[a b]] rule a b == true >> parse [(a b)] rule a b == true |
...or better, do you know where I can find a simple algebra parse script, which can compute simple expression like [1 + (2 /3)] ? I'm learning how to parse, and such example would be illuminant | |
Dockimbel 3-Dec-2008 [3278x2] | >> rule: [mark: paren! :mark into [ set v word! set w word!] (print [ v w])] >> parse [[a b]] rule == false >> parse [(a b)] rule a b == true |
There's a nice example here : http://www.rebol.com/docs/core23/rebolcore-15.html#section-6, but it requires a string! value as input. You could adapt it to use a block! value as input. | |
Oldes 3-Dec-2008 [3280x2] | Try to play with this: http://oldes.multimedia.cz/rebol/expr-test.r |
or: http://oldes.multimedia.cz/rebol/expr-test2.r http://oldes.multimedia.cz/rebol/expr-test3.r | |
Davide 3-Dec-2008 [3282] | thanks ! I'm going to study it |
older newer | first last |