World: r3wp
[!REBOL3-OLD1]
older newer | first last |
Geomol 31-Jul-2009 [16408] | while other operators work ok as lit-words: >> '= == = |
BrianH 31-Jul-2009 [16409] | Any use of those words conflicts with the tag! syntax. The trick is to set priorities. |
Geomol 31-Jul-2009 [16410] | No, the trick is to program the lexer correctly without bugs! ;-) |
BrianH 31-Jul-2009 [16411x2] | The lexer is where the priorities are set. What you are talking about isn't bugs, it is preferences (and good ones at that). |
Non-configurable preferences, mind you. They have to be set in the source of the lexer. | |
Geomol 31-Jul-2009 [16413] | Ok, I see it differently. If it's possible to make a lexer, that can cope with tags and lit-words and get-words like '< and :<, then I see it as bugs in the current implementation. |
BrianH 31-Jul-2009 [16414x3] | You could see it either way. Those "bugs" are backwards compatible with R2. However, this is clearly related to bug#666 :) |
I prefer to think of them as justifiable improvements :) | |
We take Wish tickets as seriously as Bug tickets. Whether it is a Wish or a Bug doesn't affect prioritization of ticket handling. | |
Geomol 31-Jul-2009 [16417] | Output from my work-in-progress lexer: :> Valid get-word: :> '> Valid lit-word: '> <a> Tag begin Next it should get the whole tag and return that as a valid tag. I think, it's possible to make a lexer, that can handle all this correctly (as I see it). |
BrianH 31-Jul-2009 [16418] | It all sounds doable so far. Please remember #537 in your proposal. |
Geomol 31-Jul-2009 [16419] | Why would you write a, ? Comma is not allowed in words. I wondered about this some months ago, like if Carl had some future idea for the use of comma!? |
BrianH 31-Jul-2009 [16420] | I don't want to allow , in words, I want to have the word be recognized and then have the lexer complain about the , next time. |
Sunanda 31-Jul-2009 [16421] | Try not to break things like: >> url? *::, == true (It's not always as easy as it looks :-) |
BrianH 31-Jul-2009 [16422] | Read the comments - this would be word-only. This is why I was so precise in the ticket, referring to TRANSCODE behavior. |
Geomol 31-Jul-2009 [16423] | Brian, ah ok. As : is not allowed in words, that url example should be ok. But I'm wondering, why comma isn't allowed in words, as point is. >> a.: 1 == 1 >> a,: 1 ** Syntax error: invalid "word" -- "a,:" I don't see the reason, other than if Carl has some special future idea for comma. |
BrianH 31-Jul-2009 [16424] | The comma is so bad syntactically that throwing an error every time someone tries to use it is considered a valuable feature. |
Geomol 31-Jul-2009 [16425] | Or maybe because comma is used in many languages to separate arguments, and by not allowing comma in words, REBOL might be easier to read for everyone. |
BrianH 31-Jul-2009 [16426] | Plus, having something as difficult-to-see as a comma in any syntax role is considered a bad thing. REBOL syntax didn't come out of nowhere - these choices were maade for good reasons. It's why we don't use periods as well. |
Geomol 31-Jul-2009 [16427] | If you get it, like to describe in #537, what should this return then? transcode "a,0" |
BrianH 31-Jul-2009 [16428] | [a ",0"] |
Steeve 31-Jul-2009 [16429] | period is usable |
Geomol 31-Jul-2009 [16430] | and reduce [a,0] |
BrianH 31-Jul-2009 [16431x2] | Except in binary. TRANSCODE works on UTF-8 binaries now. I need to adjust that ticket accordingly. |
Geomol, that reduce example uses TRANSCODE/all, not TRANSCODE. | |
Geomol 31-Jul-2009 [16433] | ok, I'm not too familar with transcode. Let me make another example. This works today: >> load "a ,0" == [a 0.0] What should this return: load "a,0" |
BrianH 31-Jul-2009 [16434x2] | Sounds like it should return [a 0.0]. |
Steeve, a period is usable, but not used (in general). And the period being usable is likely why the comma is an error. | |
Geomol 31-Jul-2009 [16436] | Today it's an invalid word. You suggestion would turn something invalid into being valid. |
Sunanda 31-Jul-2009 [16437] | comma can be _used_ in words, but not in words that have to be serialised and then reloaded to-word "a," ;; this works == a, to-word ",a" ;; there are some limits ** Syntax error: invalid character in: ",a" Don't serialise and reload O: o: make object! reduce [to-set-word "a," 1] == make object! [ a,: 1 ] |
Geomol 31-Jul-2009 [16438] | lol, good ones, Sunanda! |
BrianH 31-Jul-2009 [16439] | Sunanda, TO-WORD "a," being allowed sounds like a bug. Report it. |
Geomol 31-Jul-2009 [16440] | It's the general thing, we've talked a bit about before, that TO some datatype should put the result through LOAD or something, so valid REBOL comes out of it. |
Sunanda 31-Jul-2009 [16441x2] | But it's R2 compatible :) There are other edge cases -- Latin-1 chars that can be _in_ a word not not _start_ them, and do not serialise well.....I did a script and found them all once |
not not ==> but not | |
BrianH 31-Jul-2009 [16443x2] | We've already put restrictions on the character set of words - Sunanda just found a hole in those that needs repairing. |
But it's R2 compatible :) - See bug#666 :) | |
Geomol 31-Jul-2009 [16445] | Some languages only allow 7-bit ascii in the source except for strings. |
Sunanda 31-Jul-2009 [16446] | re: 666 -- I'll dig that script out and run it tomorrow :) |
Geomol 31-Jul-2009 [16447] | I could use 8-bit danish letters in my REBOL source, if I would: >> ęble: "apple" == "apple" But I don't do it. I'm not sure, if it's a good idea to allow this. I guess, 8-bit values are allowed, because it makes the lexer faster. |
BrianH 31-Jul-2009 [16448x5] | All standard functions and syntax in REBOL fit within 7-bit ASCII, which is why R3 source is UTF-8. |
UTF-8 encoded binary! | |
Adjusted #537 to reflect the post-alpha-39 behavior of TRANSCODE (can't believe I forgot to do so before now). | |
Geomol, please take another look... | |
Sunanda, #1167 created for that to-word "a," error. | |
Ladislav 31-Jul-2009 [16453x4] | {Is there a problem with getting operators? >> get to word! "=" ** Script error: = word is not bound to a context} This is not operator-specific, no variable can be handled like that: a: 1 get to word! "a" ** Script error: a word is not bound to a context |
{>> get to-word '= == op!} - in the above code the usage of TO-WORD is just a no-op | |
{Brian knows the internals.} - see the http://www.rebol.net/wiki/Comparisons article containing the general principles | |
{>> get to-word quote <>} - again, TO-WORD is just no-op above | |
BrianH 31-Jul-2009 [16457] | Knowing the internals isn't hard. I haven't seen the native source - I've just seen the mezzanine source, followed the conversations, and read sites like the onee Ladislav linked above. The rest is deduction. |
older newer | first last |