bc(1): Use more .Ql, misc related fixes.
This commit is contained in:
parent
8659a71dd2
commit
d36d23f262
89
external/bsd/bc/dist/bc.1
vendored
89
external/bsd/bc/dist/bc.1
vendored
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: bc.1,v 1.6 2021/01/07 20:37:33 uwe Exp $
|
||||
.\" $NetBSD: bc.1,v 1.7 2021/01/07 21:21:35 uwe Exp $
|
||||
.\"
|
||||
.\" bc.1 - the bc manual
|
||||
.\"
|
||||
@ -128,7 +128,8 @@ In POSIX
|
||||
.Nm
|
||||
all names are a single lower case letter.)
|
||||
The type of variable is clear by the context
|
||||
because all array variable names will be followed by brackets ([]).
|
||||
because all array variable names will be followed by brackets
|
||||
.Pq Ql [] .
|
||||
.Pp
|
||||
There are four special variables,
|
||||
.Ic scale ,
|
||||
@ -156,9 +157,9 @@ as well as used in expressions.
|
||||
Comments in
|
||||
.Nm
|
||||
start with the characters
|
||||
.Dq Ic /*
|
||||
.Ql /*
|
||||
and end with the characters
|
||||
.Dq Ic */ .
|
||||
.Ql */ .
|
||||
Comments may start anywhere and appear as a single space in the input.
|
||||
(This causes comments to delimit other input items.
|
||||
For example, a comment can not be found in the middle of
|
||||
@ -170,7 +171,7 @@ To support the use of scripts for
|
||||
.Nm ,
|
||||
a single line comment has been added as an extension.
|
||||
A single line comment starts at a
|
||||
.Dq Ic #
|
||||
.Ql #
|
||||
character and continues to the next end of the line.
|
||||
The end of line
|
||||
character is not part of the comment and is processed normally.
|
||||
@ -205,13 +206,15 @@ Lower case letters are variable names.)
|
||||
Single digit numbers always
|
||||
have the value of the digit regardless of the value of
|
||||
.Ic ibase .
|
||||
(i.e. A = 10.)
|
||||
(i.e.\&
|
||||
.Ql A
|
||||
=\~10.)
|
||||
For multi-digit numbers,
|
||||
.Nm
|
||||
changes all input digits greater or equal to ibase to the value of
|
||||
.Ic ibase - 1 .
|
||||
This makes the number
|
||||
.Dq ZZZ
|
||||
.Ql ZZZ
|
||||
always be the largest 3 digit number of the input base.
|
||||
.Pp
|
||||
Full expressions are similar to many other high level languages.
|
||||
@ -362,25 +365,41 @@ The result is 1 if either expression is non-zero.
|
||||
The expression precedence is as follows: (lowest to highest)
|
||||
.Bl -enum -offset indent
|
||||
.It
|
||||
|| operator, left associative
|
||||
.Ql ||
|
||||
operator, left associative
|
||||
.It
|
||||
&& operator, left associative
|
||||
.Ql &&
|
||||
operator, left associative
|
||||
.It
|
||||
! operator, nonassociative
|
||||
.Ql \&!
|
||||
operator, nonassociative
|
||||
.It
|
||||
Relational operators, left associative
|
||||
.It
|
||||
Assignment operator, right associative
|
||||
.It
|
||||
+ and - operators, left associative
|
||||
.Ql +
|
||||
and
|
||||
.Ql -
|
||||
operators, left associative
|
||||
.It
|
||||
*, / and % operators, left associative
|
||||
.Ql * ,
|
||||
.Ql /
|
||||
and
|
||||
.Ql %
|
||||
operators, left associative
|
||||
.It
|
||||
^ operator, right associative
|
||||
.Ql ^
|
||||
operator, right associative
|
||||
.It
|
||||
unary - operator, nonassociative
|
||||
unary
|
||||
.Ql -
|
||||
operator, nonassociative
|
||||
.It
|
||||
++ and -- operators, nonassociative
|
||||
.Ql ++
|
||||
and
|
||||
.Ql --
|
||||
operators, nonassociative
|
||||
.El
|
||||
.Pp
|
||||
This precedence was chosen so that POSIX compliant
|
||||
@ -389,16 +408,16 @@ programs will run correctly.
|
||||
This will cause the use of the relational and logical operators to
|
||||
have some unusual behavior when used with assignment expressions.
|
||||
Consider the expression:
|
||||
.Dl Ic a = 3 < 5
|
||||
.Dl a = 3 < 5
|
||||
.Pp
|
||||
Most C programmers would assume this would assign the result of
|
||||
.Dq Ic 3 < 5
|
||||
.Dq Li 3 < 5
|
||||
(the value 1) to the variable
|
||||
.Dq Ic a .
|
||||
.Va a .
|
||||
What this does in
|
||||
.Nm
|
||||
is assign the value 3 to the variable
|
||||
.Dq Ic a
|
||||
.Va a
|
||||
and then compare 3 to 5.
|
||||
It is best to use parenthesis when using relational and logical operators
|
||||
with the assignment operators.
|
||||
@ -407,7 +426,7 @@ There are a few more special expressions that are provided in
|
||||
.Nm .
|
||||
These have to do with user defined functions and standard functions.
|
||||
They all appear as
|
||||
.Do Ar name ( Ar parameters ) Dc .
|
||||
.Do Ar name Ns Li \&( Ns Ar parameters Ns Li \&) Dc .
|
||||
See the section on functions for user defined functions.
|
||||
The standard functions are:
|
||||
.Bl -tag -width 20n
|
||||
@ -462,7 +481,9 @@ newlines.
|
||||
The following is a list of
|
||||
.Nm
|
||||
statements and what they do:
|
||||
(Things enclosed in brackets ([]) are optional parts of the
|
||||
(Things enclosed in brackets
|
||||
.Pq Oo Oc
|
||||
are optional parts of the
|
||||
statement.)
|
||||
.Bl -tag -width 15n
|
||||
.It Ar expression
|
||||
@ -518,8 +539,9 @@ The newly assigned value will remain until the next number is printed
|
||||
or another value is assigned to
|
||||
.Ic last .
|
||||
(Some installations may allow the
|
||||
use of a single period (.) which is not part of a number as a short
|
||||
hand notation for
|
||||
use of a single period
|
||||
.Pq Ql \&.
|
||||
which is not part of a number as a short hand notation for
|
||||
.Ic last . )
|
||||
.It Ar "string"
|
||||
The
|
||||
@ -544,25 +566,26 @@ value is printed and assigned to the variable
|
||||
Strings in the
|
||||
.Ic print
|
||||
statement are printed to the output and may contain special characters.
|
||||
Special characters start with the backslash character (\e).
|
||||
Special characters start with the backslash character
|
||||
.Pq Ql \e .
|
||||
The special characters recognized by
|
||||
.Nm
|
||||
are
|
||||
.Sq a
|
||||
.Ql a
|
||||
(alert or bell),
|
||||
.Sq b
|
||||
.Ql b
|
||||
(backspace),
|
||||
.Sq f
|
||||
.Ql f
|
||||
(form feed),
|
||||
.Sq n
|
||||
.Ql n
|
||||
(newline),
|
||||
.Sq r
|
||||
.Ql r
|
||||
(carriage return),
|
||||
.Sq q
|
||||
.Ql q
|
||||
(double quote),
|
||||
.Sq t
|
||||
.Ql t
|
||||
(tab), and
|
||||
.Sq \e
|
||||
.Ql \e
|
||||
(backslash).
|
||||
Any other character following the backslash will be ignored.
|
||||
.It { Ar statement_list }
|
||||
@ -647,7 +670,7 @@ requires all three expressions.)
|
||||
The following is equivalent code for the
|
||||
.Ic for
|
||||
statement:
|
||||
.Bd -literal
|
||||
.Bd -literal -offset indent
|
||||
expression1;
|
||||
while (expression2) {
|
||||
statement;
|
||||
|
Loading…
Reference in New Issue
Block a user