diff options
-rw-r--r-- | toys/pending/expr.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/toys/pending/expr.c b/toys/pending/expr.c index 936f5fbd..c54a7255 100644 --- a/toys/pending/expr.c +++ b/toys/pending/expr.c @@ -13,15 +13,31 @@ config EXPR bool "expr" default n help - usage: expr args + usage: expr ARG1 OPERATOR ARG2... - Evaluate expression and print result. + Evaluate expression and print result. For example, "expr 1 + 2". - The supported operators, in order of increasing precedence, are: + The supported operators are (grouped from highest to lowest priority): - | & = > >= < <= != + - * / % : + ( ) : * / % + - != <= < >= > = & | - In addition, parentheses () are supported for grouping. + Each constant and operator must be a sparate command line argument. + All operators are infix, meaning they expect a constant (or expression + that resolves to a constant) on each side of the operator. Operators of + the same priority (within each group above) are evaluated left to right. + Parentheses may be used (as separate arguments) elevate the priority + of expressions. + + Calling expr from a command shell requires a lot of \( or '*' escaping + to avoid interpreting shell control characters. + + The & and | operators are logical, not bitwise) and may operate on + strings (a blank string is "false"). Comparison operators may also + operate on strings (alphabetical sort). + + Constants may be strings or integers. Comparison, logical, and regex + operators may operate on strings (a blank string is "false"), other + operators require integers. */ // TODO: int overflow checking |