End and the syntax parser
John Esak
john at valar.com
Tue Dec 22 00:35:05 PST 2009
Boy... You vacilate better than anyone I know! :-)
> -----Original Message-----
> From: filepro-list-bounces+john=valar.com at lists.celestial.com
> [mailto:filepro-list-bounces+john=valar.com at lists.celestial.co
m] On Behalf Of Fairlight
> Sent: Monday, December 21, 2009 10:50 PM
> To: Filepro Lists
> Subject: Re: End and the syntax parser
>
> In the relative spacial/temporal region of
> Tue, Dec 22, 2009 at 10:10:09AM +1000, Ken Cole achieved the
> spontaneous
> generation of the following:
> > Now I think this same point has been discussed previously
> but without
> > any action being taken. Should anything be done is the point of the
> > email.
> [snip]
> > I believe the following rules should be checked.
> >
> > 1. If there is anything after "end" on a line that is not a comment
> > then it is an error.
> > 2. Reserved words should not be allowed as variables and if
> attempted
> > to do so as in this example then it is an error.
> >
> > What do the rest of you think?
> > I am wrong in thinking this should throw and error?
>
> Welllllll....*vascilate*
>
> Does it happen with other reserved words? I mean, if it
> happens with, say,
> dim, lookup, etc... Everything would have to be changed to
> be uniform.
>
> This wouldn't be a problem if fP wasn't a bareword-variable
> language. You
> don't run into this in perl because you have variable type indicators
> ($,@,%,*). Other languages (JavaScript, Java [I think], et
> al) rely on
> case sensitivity, so you can have variables that are reserved
> words but
> don't collide due to case.
>
> Actually, I did just run a little test:
>
> #include <stdio.h>
>
> int main() {
> int exit;
> exit = 2;
> printf("Got here.\n");
> exit;
> }
>
> [arcadia-SuSE] [~] [10:34pm]: ./a.out
> Got here.
>
> In light of C's behaviour of allowing collisions, it would
> make me tend to
> say that an exception shouldn't be thrown in fP. However, if
> you look at
> C's -behaviour- when allowing collisions, it's sane in that it's
> interpreting the first 'exit' as a variable because it's an lvalue.
>
> Ideally, I think the parser should be redone to determine the
> semantic use
> of the term in question and to behave accordingly based on context.
>
> Barring that, I agree with you that variable names should not
> be able to be
> reserved words.
>
> The thing is, when you try to -enforce- that policy, you
> -still- need to
> determine the semantics of how a term is being used. So
> instead of just
> tossing up an exception, it really should go back to what I
> said in two
> paragraphs ago. If you need the semantics determined to throw the
> exception, you may as well go the extra mile and perform the correct
> operations rather than just toss errors at people, IMHO.
>
> Actually, I am now confused, as I did an extra test... I
> changed the last
> line of the C program to exit(1) and get:
>
> [arcadia-SuSE] [~] [10:45pm]: !cc
> cc test.c
> test.c: In function `main':
> test.c:7: error: called object `exit' is not a function
>
> So it bails at compile time. You've overridden the core
> function with a
> variable. It'll let you do it, but you can't have it both ways.
>
> Either way you go, then, it seems that collisions should either be
> disallowed entirely, or throw an exception. But you still
> have to do the
> same work to get to the point you can enforce -any- type of
> end behaviour,
> whether it's overriding or throwing an error. And that can't
> be pretty to
> have to write.
>
> I gotta ask, "Is it -really- worth changing?"
>
> Just don't screw it up. :)
>
> mark->
> --
> Audio panton, cogito singularis,
> _______________________________________________
> Filepro-list mailing list
> Filepro-list at lists.celestial.com
> http://mailman.celestial.com/mailman/listinfo/filepro-list
>
More information about the Filepro-list
mailing list