From 71efb88a36c25002d8cf1726faa291ed3e6912fe Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 18 Apr 1988 13:34:29 +0000 Subject: [PATCH] changed font 5 references to font CW references --- doc/occam/ctot | 2 +- doc/occam/p1 | 6 ++--- doc/occam/p2 | 32 ++++++++++++------------- doc/occam/p3 | 22 ++++++++--------- doc/occam/p4 | 2 +- doc/occam/p8 | 4 ++-- doc/occam/p9 | 2 +- doc/top/top.n | 64 +++++++++++++++++++++++++------------------------- 8 files changed, 67 insertions(+), 67 deletions(-) diff --git a/doc/occam/ctot b/doc/occam/ctot index 302c6910f..f4fe6481d 100755 --- a/doc/occam/ctot +++ b/doc/occam/ctot @@ -4,5 +4,5 @@ s/^ $/.ft\ .DE\ .bp\ .DS\ -.ft 5\ +.ft CW\ .ta 0.65i 1.3i 1.95i 2.6i 3.25i 3.9i 4.55i 5.2i 5.85i 6.5i/' diff --git a/doc/occam/p1 b/doc/occam/p1 index d1e2aa497..1d45e806d 100644 --- a/doc/occam/p1 +++ b/doc/occam/p1 @@ -16,7 +16,7 @@ no procedures in Occam). In addition to the normal assignment statement, Occam has two more information-transfer statements, the input and the output: .DS -.ft 5 +.ft CW chan1 ? x -- reads a value from chan1 into x chan2 ! x -- writes the value of x onto chan2 .ft @@ -36,7 +36,7 @@ for multiple input). The conditional and repetitive processes are normal .PP \fIProducer-consumer example:\fP .DS -.ft 5 +.ft CW .nf CHAN buffer: -- declares the channel buffer PAR @@ -60,7 +60,7 @@ with arrays of variables and/or channels. .PP \fIExample: 20 window-sorters in series:\fP .DS -.ft 5 +.ft CW .nf CHAN s[20]: -- 20 channels PAR i = [ 0 FOR 19 ] -- 19 processes diff --git a/doc/occam/p2 b/doc/occam/p2 index 771428c8b..be203db28 100644 --- a/doc/occam/p2 +++ b/doc/occam/p2 @@ -8,30 +8,30 @@ the aspect of indentation. .NH 2 The LLgen Parser Generator .PP -LLgen accepts a Context Free syntax extended with the operators `\f5*\fP', `\f5?\fP' and `\f5+\fP' +LLgen accepts a Context Free syntax extended with the operators `\f(CW*\fP', `\f(CW?\fP' and `\f(CW+\fP' that have effects similar to those in regular expressions. -The `\f5*\fP' is the closure set operator without an upperbound; `\f5+\fP' is the positive -closure operator without an upperbound; `\f5?\fP' is the optional operator; -`\f5[\fP' and `\f5]\fP' can be used for grouping. +The `\f(CW*\fP' is the closure set operator without an upperbound; `\f(CW+\fP' is the positive +closure operator without an upperbound; `\f(CW?\fP' is the optional operator; +`\f(CW[\fP' and `\f(CW]\fP' can be used for grouping. For example, a comma-separated list of expressions can be described as: .DS -.ft 5 +.ft CW expression_list: expression [ ',' expression ]* ; .ft .DE .LP -Alternatives must be separated by `\f5|\fP'. +Alternatives must be separated by `\f(CW|\fP'. C code (``actions'') can be inserted at all points between the colon and the semicolon. Variables global to the complete rule can be declared just in front of the -colon enclosed in the brackets `\f5{\fP' and `\f5}\fP'. All other declarations are local to +colon enclosed in the brackets `\f(CW{\fP' and `\f(CW}\fP'. All other declarations are local to their actions. Nonterminals can have parameters to pass information. A more mature version of the above example would be: .DS -.ft 5 +.ft CW expression_list(expr *e;) { expr e1, e2; } : expression(&e1) [ ',' expression(&e2) @@ -48,18 +48,18 @@ are possible, viz. the \fBalternation\fP and \fBrepetition\fP conflict. An alternation confict arises if two sides of an alternation can start with the same symbol. E.g. .DS -.ft 5 +.ft CW plus: '+' | '+' ; .ft .DE -The parser doesn't know which `\f5+\fP' to choose (neither do we). +The parser doesn't know which `\f(CW+\fP' to choose (neither do we). Such a conflict can be resolved by putting an \fBif-condition\fP in front of the first conflicting production. It consists of a \fB``%if''\fP followed by a C-expression between parentheses. If a conflict occurs (and only if it does) the C-expression is evaluated and parsing continues along this path if non-zero. Example: .DS -.ft 5 +.ft CW plus: %if (some_plusses_are_more_equal_than_others()) '+' @@ -69,7 +69,7 @@ parsing continues along this path if non-zero. Example: .ft .DE A repetition conflict arises when the parser cannot decide whether -``\f5productionrule\fP'' in e.g. ``\f5[ productionrule ]*\fP'' must be chosen +``\f(CWproductionrule\fP'' in e.g. ``\f(CW[ productionrule ]*\fP'' must be chosen once more, or that it should continue. This kind of conflicts can be resolved by putting a \fBwhile-condition\fP right after the opening parentheses. It consists of a \fB``%while''\fP @@ -79,7 +79,7 @@ comma-expression if the total expression is not part of another comma-separated list: .DS .nf -.ft 5 +.ft CW comma_expression: sub_expression [ %while (not_part_of_comma_separated_list()) @@ -110,7 +110,7 @@ is the \fBSEQ\fP construct, which exists in two flavors, one with a replicator and one process: .DS .nf -.ft 5 +.ft CW seq i = [ 1 for str[byte 0] ] out ! str[byte i] .ft @@ -119,7 +119,7 @@ and one process: and one without a replicator and several processes: .DS .nf -.ft 5 +.ft CW seq in ? c out ! c @@ -129,7 +129,7 @@ and one without a replicator and several processes: The LLgen skeleton grammar to handle these two is: .DS .nf -.ft 5 +.ft CW SEQ { line=yylineno; oind=ind; } [ %if (line==yylineno) replicator diff --git a/doc/occam/p3 b/doc/occam/p3 index 143df659a..58ffbb75c 100644 --- a/doc/occam/p3 +++ b/doc/occam/p3 @@ -59,10 +59,10 @@ line left 1.0 from 7/12 <2nd box.nw, 2nd box.sw> .DS C \fIFigure 1. Interprocess and outside world communication channels\fP .DE -The basic channel handling is done by \f5chan_in\fP and \f5chan_out\fP. All -other routines are based on them. The routine \f5chan_any\fP only checks if +The basic channel handling is done by \f(CWchan_in\fP and \f(CWchan_out\fP. All +other routines are based on them. The routine \f(CWchan_any\fP only checks if there's a value available on a given channel. (It does not read this value!) -\f5C_init\fP initializes an array of interprocess communication channels. +\f(CWC_init\fP initializes an array of interprocess communication channels. .LP The following table shows Occam statements paired with the routines used to execute them. @@ -224,7 +224,7 @@ for(;;) { T} .sp 0.5 .TE -The code of \f5c_init\fP, \f5chan_in\fP, \f5chan_out\fP and \f5chan_any\fP +The code of \f(CWc_init\fP, \f(CWchan_in\fP, \f(CWchan_out\fP and \f(CWchan_any\fP can be found in Appendix A. .NH 3 Synchronization on interprocess communication channels @@ -252,7 +252,7 @@ NOW \fBNOW\fP evaluates to the current time returned by the time(2) system call. The code is simply: .DS -.ft 5 +.ft CW .nf long now() { @@ -276,14 +276,14 @@ defined: \fBerror\fP, that corresponds with the standard error file. .IP - \fBfile\fP, an array of channels that can be subscripted with an index -obtained by the builtin named process ``\f5open\fP''. Note that +obtained by the builtin named process ``\f(CWopen\fP''. Note that \fBinput\fP=\fBfile\fP[0], \fBoutput\fP=\fBfile\fP[1] and \fBerror\fP=\fBfile\fP[2]. .LP Builtin named processes to open and close files are defined as .DS .nf -.ft 5 +.ft CW proc open(var index, value name[], mode[]) = ..... : proc close(value index) = ..... : .fi @@ -291,7 +291,7 @@ proc close(value index) = ..... : .DE To open a file `junk', write nonsense onto it, and close it, goes as follows: .DS -.ft 5 +.ft CW .nf var i: seq @@ -318,19 +318,19 @@ and lines are buffered before they are read). (i.e. no echoing of typed characters and no line buffering). .LP To exit an Occam program, e.g. after an error, a builtin named process -\f5exit\fP is available that takes an exit code as its argument. +\f(CWexit\fP is available that takes an exit code as its argument. .NH 2 Replicators and slices .PP Both the base and the count of replicators like in .DS -.ft 5 +.ft CW par i = [ base for count ] .ft .DE may be arbitrary expressions. The count in array slices like in .DS -.ft 5 +.ft CW c ? A[ base for count ] .ft .DE diff --git a/doc/occam/p4 b/doc/occam/p4 index e6da51698..7446d8941 100644 --- a/doc/occam/p4 +++ b/doc/occam/p4 @@ -27,7 +27,7 @@ ANY According to the occam syntax the \fBANY\fP keyword may be the only argument of an input or output process. Thus, .DS -.ft 5 +.ft CW c ? ANY; x .ft .DE diff --git a/doc/occam/p8 b/doc/occam/p8 index 88c0b58fe..71e622bd4 100644 --- a/doc/occam/p8 +++ b/doc/occam/p8 @@ -2,14 +2,14 @@ .NH Appendix A: Implementation of the channel routines .DS L -.ft 5 +.ft CW .ta 0.65i 1.3i 1.95i 2.6i 3.25i 3.9i 4.55i 5.2i 5.85i 6.5i .so channel.h.t .ft .DE .bp .DS L -.ft 5 +.ft CW .ta 0.65i 1.3i 1.95i 2.6i 3.25i 3.9i 4.55i 5.2i 5.85i 6.5i .so channel.c.t .ft diff --git a/doc/occam/p9 b/doc/occam/p9 index dd8292f2f..3096fe16e 100644 --- a/doc/occam/p9 +++ b/doc/occam/p9 @@ -5,7 +5,7 @@ routines to simulate parallelism .PP Translation of the parallel construct: .DS -.ft 5 +.ft CW par P0 par i = [ 1 for n ] diff --git a/doc/top/top.n b/doc/top/top.n index 61e38df44..8e0715c47 100644 --- a/doc/top/top.n +++ b/doc/top/top.n @@ -82,7 +82,7 @@ machine-dependent description table (see figure 1.). So the major part of the code of a target optimizer is shared among all target optimizers. .DS -.ft 5 +.ft CW |-------------------------| @@ -164,7 +164,7 @@ ANY matches every instruction mnemonic. .nf Examples of mnemonic descriptions: -.ft 5 +.ft CW add sub.l @@ -177,7 +177,7 @@ An operand can also be described by a string constant. .nf Examples: -.ft 5 +.ft CW (sp)+ r5 @@ -192,7 +192,7 @@ Each such declaration defines the name of a variable and a \fIrestriction\fR to which its value is subjected. .nf Example of variable declarations: -.ft 5 +.ft CW CONST { VAL[0] == '$' }; REG { VAL[0] == 'r' && VAL[1] >= '0' && VAL[1] <= '3' && @@ -206,7 +206,7 @@ a null-terminated string. An operand description given via a variable name matches an actual operand if the actual operand obeys the associated restriction. .nf -.ft 5 +.ft CW CONST matches $1, $-5, $foo etc. REG matches r0, r1, r2 and r3 @@ -224,7 +224,7 @@ These procedures must be added to the table after the patterns. .nf Example: -.ft 5 +.ft CW FERMAT_NUMBER { VAL[0] == '$' && is_fermat_number(&VAL[1]) }; @@ -238,7 +238,7 @@ The most general form allowed is: string_constant1 variable_name string_constant2 Example: -.ft 5 +.ft CW (REG)+ matches (r0)+, (r1)+, (r2)+ and (r3)+ @@ -268,19 +268,19 @@ the optional constraint C is satisfied, i.e. it evaluates to TRUE. .LP .nf The pattern: -.ft 5 +.ft CW dec REG : move.b CONST,(REG) .ft R matches: -.ft 5 +.ft CW dec r0 : move.b $4,(r0) .ft R but not: -.ft 5 +.ft CW dec r0 : move.b $4,(r1) @@ -292,7 +292,7 @@ extra names for a register should be declared, all sharing the same restriction. .nf Example: -.ft 5 +.ft CW REG1,REG2 { VAL[0] == 'r' && ..... }; @@ -305,13 +305,13 @@ the parameter restrictions). The expression may refer to the variables and to ANY. .nf Example: -.ft 5 +.ft CW move REG1,REG2 { REG1[1] == REG2[1] + 1 } .ft R matches -.ft 5 +.ft CW move r1,r0 move r2,r1 @@ -338,7 +338,7 @@ Vax examples Suppose the table contains the following declarations: .nf -.ft 5 +.ft CW X, LOG { TRUE }; LAB { VAL[0] == 'L' }; /* e.g. L0017 */ A { no_side_effects(VAL) }; @@ -353,7 +353,7 @@ These procedures must be supplied by the table-writer and must be included in the table. .PP .nf -.ft 5 +.ft CW \fIentry:\fP addl3 X,A,A -> addl2 X,A; .ft R @@ -362,7 +362,7 @@ This entry changes a 3-operand instruction into a cheaper 2-operand instruction. An optimization like: .nf -.ft 5 +.ft CW addl3 r0,(r2)+,(r2)+ -> addl2 r0,(r2)+ @@ -373,7 +373,7 @@ Hence the second argument is required to be side-effect free. .PP .nf -.ft 5 +.ft CW \fIentry:\fP addw2 $-NUM,X -> subw2 $NUM,X; .ft R @@ -384,7 +384,7 @@ because constants in the range 0 to 63 are represented very efficiently on the Vax. .PP .nf -.ft 5 +.ft CW \fIentry:\fP bitw $NUM,A : jneq LAB { is_poweroftwo(NUM,LOG) } -> jbs $LOG,A,LAB; @@ -395,7 +395,7 @@ x and y. A "jbs n,x,l" branches to l if bit n of x is set. So, for example, the following transformation is possible: .nf -.ft 5 +.ft CW bitw $32,r0 : jneq L0017 -> jbs $5,r0,L0017 @@ -413,7 +413,7 @@ PDP-11 examples Suppose we have the following declarations: .nf -.ft 5 +.ft CW X { TRUE }; A { no_side_effects(VAL) }; L1, L2 { VAL[0] == 'I' }; @@ -426,7 +426,7 @@ The implementation of "no_side_effects" may of course differ for the PDP-11 and the Vax. .PP .nf -.ft 5 +.ft CW \fIentry:\fP mov REG,A : ANY A,X -> mov REG,A : ANY REG,X ; .ft R @@ -436,7 +436,7 @@ If A and REG hold the same value (which is true after "mov REG,A") and A is used as source (first) operand, it is cheaper to use REG instead. .PP .nf -.ft 5 +.ft CW \fIentry:\fP jeq L1 : jbr L2 : labdef L1 -> jne L2 : labdef L1; .ft R @@ -447,7 +447,7 @@ As the target optimizer has to know how such a definition looks like, this must be expressed in the table (see Appendix A). .PP .nf -.ft 5 +.ft CW \fIentry:\fP add $01,X { carry_dead(REST) } -> inc X; .ft R @@ -487,27 +487,27 @@ backwards, as it is possible that instructions that were rejected earlier now do match. For example, consider the following patterns: .DS -.ft 5 +.ft CW cmp $0, X -> tst X ; mov REG,X : tst X -> move REG.X ; /* redundant test */ .ft R .DE If the input is: .DS -.ft 5 +.ft CW mov r0,foo : cmp $0,foo .ft R .DE then the first instruction is initially rejected. However, after the transformation .DS -.ft 5 +.ft CW cmp $0,foo -> tst foo .ft R .DE the following optimization is possible: .DS -.ft 5 +.ft CW mov r0,foo : tst foo -> mov r0,foo .ft R .DE @@ -725,7 +725,7 @@ Identifiers are sequences of letters, digits and the underscore ('_'), beginning with a letter. .PP .DS -.ft 5 +.ft CW table -> {parameter_line} '%%;' {variable_declaration} '%%;' {entry} '%%;' user_routines. .ft R @@ -735,7 +735,7 @@ constants, variable declarations, pattern rules and user-supplied subroutines. .PP .DS -.ft 5 +.ft CW parameter_line -> identifier value ';' . .ft R .DE @@ -792,7 +792,7 @@ the line is not optimized. Optimization does, however, proceed with the rest of the input. .PP .DS -.ft 5 +.ft CW variable_declaration -> identifier {',' identifier} restriction ';' . restriction -> '{' anything '}' . @@ -816,7 +816,7 @@ Inside the expression, the name VAL stands for the part of the actual The expression may contain calls to procedures that are defined in the user-routines section. .DS -.ft 5 +.ft CW entry -> pattern '->' replacement ';' . pattern -> instruction_descr @@ -862,7 +862,7 @@ which contains the mnemonic of the first instruction of the rest of the input. (REST is a null-string if this mnemonic can not be determined). .DS -.ft 5 +.ft CW user_routines -> anything . .ft R .DE