you need to terminate somehow.
Yup! Sooner or later...
Eliminating the semicolon is easy: Just come up with a way to separate multiple statements per line, multiple lines per statement and some way to tell the compiler where the end of a statement is (useful for error recovery) and you're all set!
Fortran didn't consider white space at all. It would interpret the following as a DO loop
DO 10 I=1,10
It would also accept as a DO loop
DO10I=1,10
Basically, the compiler didn't know, until if found the comma, whether it was creating a loop or a simple assignment. If it saw the comma, it had to back up and break the DO10I into pieces.
Not a very nice syntax to compile. Strictly ad-hoc, no clean recursive descent.
Fortran makes the assumption that every statement terminates at the end of the line unless column 6 in the following card has a mark (or number). The following statement extends over two lines although legally complete at the end of the first line:
area = 3.14159265358979
+ * r * r
What a mess to compile!