Re: Rob, no reply? Minor bug found in 3.1 and previous
- Posted by Al Getz <Xaxo at aol.?om> Jul 07, 2007
- 577 views
Robert Craig wrote: > > I don't plan to do anything about this. > It's a rare situation, and I don't think it's > worth the trouble to try to improve the error message. > > Al Getz wrote: > > > > Al Getz wrote: > > > > > > Robert Craig wrote: > > > > > > > > Al Getz wrote: > > > > > > > > > > --program: > > > > > constant x=1 > > > > > x=2 > > > > > --end program > > > > > > > > > > --error message: > > > > > C:\Euphoria\Projects\Test\test.exw:2 > > > > > x has not been declared > > > > > x=2 > > > > > ^ > > > > > > > > > > Press Enter > > > > > --end message > > > > > > > > > > > > > > > Error message should be "May not change the value of a constant", > > > > > or something like that. > > > > > > > > Yes, that would be a better message. > > > > You've caught the parser and scanner at an awkward moment. > > > > What's happening here is that you're making the scanner > > > > look up x in the symbol table, when the parser hasn't quite > > > > finished the constant declaration of x. The fact that > > > > you enter a new-line character after constant x = 1 > > > > is no more significant than typing a blank, and > > > > the parser needs to see the next scanner token to be sure that > > > > the constant declaration is really finished. You might have > > > > had: > > > > }}} <eucode> > > > > constant x = 1 > > > > + 1 -- x is 2 > > > > </eucode> {{{ > > > > for instance. Until the parser digests the next token after " = 1", > > > > it can't be sure that the declaration is finished, > > > > and can't record that x is a constant with value 1 > > > > in the symbol table. > > > > > > > > Regards, > > > > Rob Craig > > > > Rapid Deployment Software > > > > <a > > > > href="http://www.RapidEuphoria.com">http://www.RapidEuphoria.com</a> > > > > > > > > > Hi Rob, > > > > > > > > > Ok, but it looks to me like logically it is not too hard to detect > > > the end of a constant declaration. Whether or not the parser can > > > do this yet or not i dont know, apparently it can not. > > > > > > I think i see what you are talking about however, in that the > > > following program gives the same error: > > > > > > -- > > > constant y=2 > > > constant x=y x=1 > > > -- > > > > > > Apparently though something sees the whitespace and is able to terminate > > > the > > > "x=y" part once the 'x' is encountered, it is just not able to understand > > > the difference > > > between a comma or whitespace or other, non-variable-starter characters > > > (which would tell it to keep parsing the constant declaration) and > > > an actual variable-starter character. > > > In other words, if it encounters a character that is in the set of > > > all characters that can be a variable starter then it is forced to > > > terminate the constant declaration. Isnt the current set A to Z and > > > a to z ? Note there is no possibilty of: > > > > > > constant x=y x --(which would trigger an "x is not declared" error) > > > > > > where the user intended > > > > > > constant x=yx > > > > > > > > > and also > > > > > > constant x=x > > > > > > would probably trigger an "x is not declared" error (referring to > > > the second x). > > > > > > > > > Make sense or did i assume too much? > > > > > > > > > Bottom line is that the main reason i mentioned this is because > > > when you get the error message "x is not declared" it makes you > > > think you can go somewhere near the beginning of the program and > > > type "atom x" and all will be fine > > > Only after typing that will the real problem show itself (x was > > > already declared as a constant) on the next run. > > > > > > > > > Al > > Regards, > Rob Craig > Rapid Deployment Software > <a href="http://www.RapidEuphoria.com">http://www.RapidEuphoria.com</a> Hi again, Yeah, im not going to loose any sleep over this either, but i thought for completeness it was worth mentioning. Someday, somebody, somewhere, may wish to see a Euphoria with zero bugs (or at least all the known ones eliminated). Take care, Al E boa sorte com sua programacao Euphoria! My bumper sticker: "I brake for LED's" From "Black Knight": "I can live with losing the good fight, but i can not live without fighting it". "Well on second thought, maybe not."