[comp.lang.misc] C-INTERCAL Version 0.6 available

steve@bat.cc.rochester.edu (Steve Swales) (01/06/91)

C-INTERCAL version 0.6 is now available by anonymous ftp from:

	ftp.white.toronto.edu (128.100.2.160 right now)
		pub/intercal/interal0.6.tar.Z
	and

	buacca.bu.edu (128.197.2.4)
		ick6tarz (in the ANON index... see buacca readme file)

Thanks to Chris Siebenmann and Nik Conwell, respectively, for providing
the sites.

C-INTERCAL v0.6 is the latest version of Eric Raymond's compiler for
the INTERCAL programming language, with enhancements, bug fixes, and
extensions by myself and a host of others. It is in the form of a
compressed tar file, which should be extracted in an empty directory
(for best results).  It is provided with a Makefile, for compiling on
UNIX-ish systems, and has been tested on (at least) Sun workstations,
but is by no means guaranteed to work CORRECTLY (if such a term can be
applied to INTERCAL), even on the systems where it has been tested.
Interested persons are encouraged to obtain it (during non-work hours
PLEASE), and direct comments, questions, flames, etc. to me at any of
the address(s) listed below. Enjoy.

-steve
-- 
-------------------------------------------------------+"Come, Watson, come!"
 Steve Swales                (716) 275-0265,-3857,-5101| he cried. "The game is
 steve@bat.lle.rochester.edu           (128.151.32.111)| afoot. Not a word!
 {decvax,harvard,ames,rutgers}!rochester!ur-laser!steve| Into your clothes and
 University of Rochester            250 East River Road| come!"		S.H.
 Laboratory for Laser Energetics    Rochester, NY 14623|     'The Abbey Grange'

janhen@wn3.sci.kun.nl (Jan Hendrikx) (01/09/91)

In article <11491@ur-cc.UUCP> steve@bat.cc.rochester.edu (Steve Swales) writes:
>C-INTERCAL version 0.6 is now available by anonymous ftp
[rest deleted]

I got the compiler, but...

From "test1.i":

       DO ABSTAIN FROM (52)
       DO ABSTAIN FROM NEXTING		(this line added by me)
       DO REINSTATE (52)
(52)   DO (123) NEXT
       DO ERROR: LABEL REINSTATING NOT WORKING

According to the manual section on REINSTATE, statement (52) should
NOT be abstained from, but the C-INTERCAL 0.6 compiler gets this terribly
wrong. The error message is printed, while it should not be.

    REINSTATEment  nullifies  the  effects  of  an   abstention.
    Either  form  of  REINSTATEment  can  be  used  to  "free" a
    statement, regardless of whether the statement was abstained
    from  by  gerund  list,  line   label,   or   NOT.

Can something be done about this? And we only get comp.lang.misc
here, not alt.lang.intercal, btw.

janhen@wn3.sci.kun.nl (Jan Hendrikx) (01/10/91)

It looks like some people have misread the manual (that is, interpreted
it differently than I did :-). Therefore, I'll quote a bit more and
give line-by-line comments on the example I supplied.

The manual says about ABSTAIN:
	 This statement takes on one of two forms.   It may  not
    take  on  both  at  any  one time.   DO ABSTAIN FROM (label)
    causes the statement whose logical line label is (label)  to
    be  abstained from.   PLEASE ABSTAIN FROM gerund list causes
    all statements of the  specified  type(s)  to  be  abstained
    from, as in [deleted]

As you can see, a STATEMENT can be abstained from, NOT an OPERATION
(as indicated by the gerund list). Therefore, ABSTAIN FROM gerund
is equivalent to ABSTAIN FROM (label) for each statement that
consists of the specified operation.

[The second sentence (It may not take on both at any one time)
is just humorous because one statement CAN be only one form at a
time, disallowing this is just funny. It cannot mean that you
can use only one of the forms in the entire program, because
such a drastic claim would have been more explicit, and is
inconsistent with the text on REINSTATE]

And this about REINSTATE:
    REINSTATEment  nullifies  the  effects  of  an   abstention.
    Either  form  of  REINSTATEment  can  be  used  to  "free" a
    statement, regardless of whether the statement was abstained
    from  by  gerund  list,  line   label,   or   NOT.

This confirms my "abbreviation" interpretation above.

Now the example again:
       DO ABSTAIN FROM (52)
This line is irrelevant here.. it abstains from (52).
       DO ABSTAIN FROM NEXTING		(this line added by me)
This abstains from all lines with NEXT.. here that is only (52).
       DO REINSTATE (52)
This reinstates (52) and therefore undoes the previous two
abstentions. Any other statements with NEXT are not affected.
(52)   DO (123) NEXT
This should now be executed normally.
       DO ERROR: LABEL REINSTATING NOT WORKING
and therefore control should not reach this statement.

Oh, look at me... I only got the manual a few days ago and now I am
already in a violent argument about its interpretation ;-)