.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.