On 2021-06-21 12:06 a.m., Chuck Guzis via cctalk wrote:
Some may find this paper interesting on the FORTRAN I compiler:

https://www.cs.fsu.edu/~lacher/courses/COT4401/notes/cise_v2_i1/fortran.pdf

I will add that the diagnostic error messages for FORTRAN I were pretty
good for the time.  Missing a comma in a computed GOTO?  There was an
error message that directly addressed this error.

Back when I was still in the business of writing compilers, the "Dragon
Book" ("Compilers: Principles, Techniques and Tools", Aho, Sethi;
Ullman) was the standard reference.   I don't know if it still is.  The
earlier book by Saul Rosen is also pretty good.

I have 'borrowed' copy of the Green dragon book.
The book promotes code generation for a multi register machine. PDP 11,
PDP 10, IBM 360. "(C) Bell Labs 1979 " I think is big hint here.

The machine model I am looking at is a single accumulator design like the 6800 or the IBM 1130. A AC,PC,Index and stack. No push or pop, subroutine call returns the old pc in the AC.


FORTRAN (as opposed to Fortran) is somewhat odd lexically when compared
with other languages.  There are no reserved words, there is no concept
of whitespace (except in Hollerith constants) and combinations of
EQUIVALENCE and COMMON have sent many a compiler designer to tipple.

Is Fortran the newer version of FORTRAN ( I II IV )?


But there are lots of ways to skin the proverbial cat.  When I had to
produce an extended BASIC compiler for the 8085 using only a floppy-disk
MDS 800 system, I adopted a technique I learned from an old IBM COMTRAN
compiler guru.   Lay out the semantics of your compiler; lexical
elements, their characteristics, etc. and then think of them as tokens
for a hypothetical machine that takes as input lexical elements and
produces some sort of code as output.  Initially, my exposure to this
technique was in a COBOL dialect translator--you took more or less
standard COBOL as input and produced bastardized COBOL as output

There is very little to to bootstrap with today, that uses a small amount of memory.I need a cross compiler for my machine like K&R C
style compiler ,not the latest C+-#@? compiler.
I have no problem with a recursive decent compiler,I just have subtract
divide and mod reversed in places, something I want to avoid as well a
DISPLAY's like in Algol or Pascal.


You design the instruction set of your hypothetical machine, then either
interpret it or use those instructions to produce macro calls.  ASM80 on
ISIS II had a relatively weak macro facility, so we wrote the macro
processor in PL/M.  Worked like a charm--in 4 months we had a working
compiler.  I still have the design paper that I wrote for it.

The machine works on FPGA delopment card, see the bliking lights on the
kitchen table. No hypothetical here.

1) Computer     Check
2) Front panel  Check
3) Bootstrap  loader Check
4) Software     No Check
Stage 4 is the problem.


For whatever an old man's story is worth...

--Chuck
Thanks.
Ben.



Reply via email to