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

World: r3wp

[REBOL Syntax] Discussions about REBOL syntax

Ladislav
16-Feb-2012
[101]
Why did you put #"'" into the c-word definition?
Steeve
16-Feb-2012
[102x8]
I forgot to add #"'" in the charset.

c-word: complement union charset "()[]^"{}/;<>,\#$%:@^@" whitespace
Good, you saw it
you're fast
I also forgot to add the special cases for + and -
c-word: complement union charset "()[]^"{}/;<>,\#$%:@^@" whitespace
word-syntax: [
	  [#"." | #"+" | #"-" | not #"'"] c-word any [c-word | digit]
	  | #"." | #"+" | #"-"
]
Thanks to your notes
Well it's more complex than that.
+' and -' are invalid
Maybe
word-syntax: [
	[#"." | #"+" not #"'"| #"-" not #"'"| not #"'"] 
		c-word any [c-word | digit]
	| #"." | #"+" | #"-"
]
Ladislav
16-Feb-2012
[110]
lots of exceptions, indeed
Steeve
16-Feb-2012
[111]
Should that be enforced with [termination] also ?
Ladislav
16-Feb-2012
[112x2]
Well, this way it would accept some unacceptable strings, like "." 
in ".1" e.g.
However, the TERMINATION can be added to the whole word syntax combined 
from the partial syntax cases
Steeve
16-Feb-2012
[114x2]
Well there are some annoyng  cases when values are stuck together 
but valids.
>> [a< 1]
== [a < 1]
termination can't be used to the whole
Ladislav
16-Feb-2012
[116]
yes, needs some care
Steeve
16-Feb-2012
[117]
I need a pause :-)
Ladislav
16-Feb-2012
[118x2]
however, your example looks to be R2-specific
good night
Steeve
16-Feb-2012
[120x2]
gn
last attempt for tonight

word-syntax: [
	[#"." | #"+" not #"'" | #"-" not #"'" | not #"'" and c-word] 
	[
		c-word any [c-word | digit]
		| termination
	]
]

Too obfuscated maybe
Feel free to go on anyone
BrianH
16-Feb-2012
[122x4]
Word syntax (for R3), in a comment here: http://issue.cc/r3/1302
It doesn't handle the other word types yet, so it needs work. Some 
of the syntax bug tickets came from that.
When it comes to things like word syntax, the errors raised for bad 
syntax and the particular cases where they are raised need to be 
part of the rules.
In a full syntax description, some of those charsets would be named 
differently of course.
Steeve
17-Feb-2012
[126x3]
You raise a good question Brian. Should the rules emit their own 
errors ? 

I guess the intent is to keep them light for now. If an error occurs, 
the parsing just stop.

Another guess is that alternative rules (eg. inside value-syntax) 
should be kept order independent when possible (with the drawback 
that they are slightly more convoluted than necessary).
last but not least


word-char: complement union charset "()[]^"{}/;<>,\#$%:@^@" whitespace
word-ext: [
	word-char any [word-char | digit]
	[and [#"<" | #">"] | termination]
]
word-syntax: [
	not sign not #"." not #"'" word-ext 
	| #"." [and [#"<" | #">"] | termination]
	| #"." word-ext
	| sign termination
	| sign not #"'" word-ext
	| more-less-word
]
grumpffff, still missing the cases with prefix [+.] and [-.]

word-syntax: [
	not sign not #"." not #"'" word-ext 
	| #"." [and [#"<" | #">"] | termination]
	| #"." word-ext
	| sign termination
	| sign not #"'" opt #"." word-ext      ; <--- there
	| more-less-word
]
Ladislav
17-Feb-2012
[129]
I committed a slightly different variant (but based on your findings 
as well). Could you (or other volunteers) check it, please?
Steeve
17-Feb-2012
[130]
Remaining problems with [termination] in word-syntax.
When a word is stuck with a less-word or a tag (R2 and R3)
a<
 == [a <] valid
a<=
 == [a <=] valid
a<>
 == [a <>] valid
a<<
 == [a <<] valid
a<tag>
 == [a <tag>] valid

a>=
 invalid
a>
 invalid
a>>
 invalid

IMO, t's enough to check if the following char is #"<" only

word-syntax: [
	slash-word termination
	| more-less-word termination
	| opt sign [#"." | not #"'"] not digit any word-char
		[termination | and #"<"]
]
Ladislav
17-Feb-2012
[131]
a<
 == [a <] - this does not work in R3
Steeve
17-Feb-2012
[132x2]
???? it's working there
>> system/version
== 2.100.95.3.1
Ladislav
17-Feb-2012
[134]
>> system/version
== 2.100.111.3.1
Steeve
17-Feb-2012
[135x2]
Humm... a bit old, well with the last version you're true
but, it remains a problem when followed by a tag
Ladislav
17-Feb-2012
[137x3]
A112 (not released) is reported to have other improvements related 
to get-words and set-words
remains a problem when followed by a tag
 - indeed, needs adjustment then
A question for Brian: do you think the case:


load "a<a>" ; == [a <a>] shall be mentioned in CC? (and, eventually, 
where?, a new ticket or an old one?)
Steeve
17-Feb-2012
[140]
Question:
Why #"/" is in termination-char ?

(termination-char: union whitespace charset "()[]^"{}/^@;" )
Ladislav
17-Feb-2012
[141]
That is because #"/" is a separator in paths
Steeve
17-Feb-2012
[142]
well it's a problem for the other datatypes which use [termination]
Ladislav
17-Feb-2012
[143]
example?
Steeve
17-Feb-2012
[144x2]
example: word-syntax
with the current ruke a word can be terlinated with #"/'
*rule
Ladislav
17-Feb-2012
[146]
yes, but that is not a problem
Steeve
17-Feb-2012
[147]
*terminated/followed
Ladislav
17-Feb-2012
[148]
(is it?)
Maxim
17-Feb-2012
[149]
>> hh/
** Syntax Error: Invalid path -- hh/
** Near: (line 1) hh/
Ladislav
17-Feb-2012
[150]
Yes, but that is not a problem for the word, it is an invalid path