.NH
Languages
.NH 2
The C Language
.LP
.sh CC
Compile and/or link edit programs in the C
language.
The 
.UC UNIX
operating system, most of the
subsystems and C itself are written in C.
For a full description of C, read
.ul
The C Programming Language,
Brian W. Kernighan and Dennis M. Ritchie,
Prentice-Hall, 1978.
.op
General purpose language
designed for structured programming.
.op
Data types include
character,
integer,
float,
double,
pointers to all types,
functions returning above types,
arrays of all types,
structures and unions of all types.
.op
Operations intended to give machine-independent control
of full machine facility, including to-memory
operations and
pointer arithmetic.
.op
Macro preprocessor for parameterized code and inclusion of
standard files.
.op
All procedures recursive, with parameters by value.
.op
Machine-independent pointer manipulation.
.op
Object code uses full
addressing capability of the PDP-11.
.op
Runtime library gives access to all system facilities.
.OP
Definable data types.
.OP
Block structure
.sh  LINT
Verifier for C programs.
Reports questionable or nonportable usage such as:
.nf
.in +2
Mismatched data declarations and procedure interfaces.
.br
Nonportable type conversions.
.br
Unused variables, unreachable code, no-effect operations.
.br
Mistyped pointers.
.br
Obsolete syntax.
.in -2
.OP
Full cross-module checking of separately compiled programs.
.sh CB
A beautifier for C programs.
Does proper indentation and placement of braces.
.NH 2
Fortran
.LP
.sh  F77
A full compiler for 
ANSI Standard Fortran 77.
.OP
Compatible with C and supporting tools at object level.
.OP
Optional source compatibility with Fortran 66.
.OP
Free format source.
.op
Optional subscript-range checking, detection of uninitialized variables.
.OP
All widths of arithmetic:
2- and 4-byte integer; 4- and 8-byte real; 8- and 16-byte
complex.
.sh RATFOR
Ratfor adds rational
control structure \o'a\(ga' la C to Fortran.
.op
Compound statements.
.op
If-else, do, for, while,
repeat-until, break, next
statements.
.op
Symbolic constants.
.op
File insertion.
.op
Free format source
.op
Translation of relationals like >, >=.
.op
Produces genuine Fortran to carry away.
.op
May be used with F77.
.sh STRUCT
Converts ordinary ugly Fortran into structured Fortran (i.e., Ratfor),
using statement grouping, if-else, while, for, repeat-until.
.NH 2
Other Algorithmic Languages
.LP
.sh BAS
An interactive interpreter, similar in style to BASIC.
Interpret unnumbered statements immediately,
numbered statements upon `run'.
.op
Statements include:
.in+2
.nf
comment,
dump,
for...next,
goto,
if...else...fi,
list,
print,
prompt,
return,
run,
save.
.fi
.in 0
.op
All calculations double precision.
.op
Recursive function defining and calling.
.op
Builtin functions include log, exp, sin, cos, atn, int,
sqr, abs, rnd.
.op
Escape to ED for complex program editing.
.sh DC
Interactive programmable desk calculator.
Has named storage locations as well
as conventional stack for holding integers or programs.
.op
Unlimited precision decimal arithmetic.
.op
Appropriate treatment of decimal fractions.
.op
Arbitrary input and output radices, in particular
binary, octal, decimal and hexadecimal.
.op
Reverse Polish operators:
.in+2
.nf
+ \- * /
remainder, power, square root,
load, store, duplicate, clear,
print, enter program text, execute.
.in-2
.fi
.sh BC
A C-like interactive interface to the desk calculator DC.
.op
All the capabilities of DC with a high-level syntax.
.op
Arrays and recursive functions.
.op
Immediate evaluation of expressions and evaluation of
functions upon call.
.op
Arbitrary precision elementary functions:
exp, sin, cos, atan.
.op
Go-to-less programming.
.NH 2
Macroprocessing
.LP
.nr c 0 1
.sh  M4
A general purpose macroprocessor.
.OP
Stream-oriented, recognizes macros anywhere in text.
.OP
Syntax fits with functional syntax of most higher-level
languages.
.OP
Can evaluate integer arithmetic expressions.
.NH 2
Compiler-compilers
.LP
.sh YACC
An LR(1)-based compiler writing system.
During execution of resulting
parsers, arbitrary C functions may be
called to do code generation or semantic actions.
.op
BNF syntax specifications.
.op
Precedence relations.
.op
Accepts formally ambiguous grammars
with non-BNF resolution rules.
.sh  LEX
Generator of lexical analyzers.
Arbitrary C functions may be called
upon isolation of each lexical token.
.OP
Full regular expression,
plus left and right context dependence.
.OP
Resulting lexical analysers interface cleanly
with YACC parsers.
