Doc: little changes

This commit is contained in:
2024-06-19 22:46:35 +02:00
parent be992131b1
commit ec0963e26f
2 changed files with 243 additions and 118 deletions
+89 -46
View File
@@ -104,7 +104,7 @@ dev-expr -- Expressions calculator v1.10.0(build 14),2024/06/17 (celestino.amoro
-p Print prefix form
-t Print tree form <2>
-v, --version Show program version
>>>
>>>
----
<1> Only available for single fraction values
@@ -186,7 +186,7 @@ Value range: *-9223372036854775808* to *9223372036854775807*
| [blue]`*` | _product_ | Multiply two values | [blue]`-1 * 2` -> -2
| [blue]`/` | _Division_ | Divide the left value by the right one^(*)^ | [blue]`-10 / 2` -> 5
| [blue]`%` | _Modulo_ | Remainder of the integer division | [blue]`5 % 2` -> 1
|===
|===
^(*)^ See also the _float division_ [blue]`./` below.
@@ -204,15 +204,20 @@ _dec-seq_ = _see-integer-literal-syntax_
.Examples
`>>>` [blue]`1.0` +
[green]`1` +
[green]`1`
`>>>` [blue]`0.123` +
[green]`0.123` +
[green]`0.123`
`>>>` [blue]`4.5e+3` +
[green]`4500` +
[green]`4500`
`>>>` [blue]`4.5E-33` +
[green]`4.5e-33` +
[green]`4.5e-33`
`>>>` [blue]`4.5E-3` +
[green]`0.0045` +
[green]`0.0045`
`>>>` [blue]`4.5E10` +
[green]`4.5e+10`
@@ -242,35 +247,43 @@ _digit-seq_ = _see-integer-literal-syntax_
====
.Examples
// [source,go]
// ----
`>>>` [blue]`1 | 2` +
[green]`1|2` +
[green]`1|2`
`>>>` [blue]`4|6` [gray]_// Fractions are always reduced to their lowest terms_ +
[green]`2|3` +
[green]`2|3`
`>>>` [blue]`1|2 + 2|3` +
[green]`7|6` +
[green]`7|6`
`>>>` [blue]`1|2 * 2|3` +
[green]`1|3` +
[green]`1|3`
`>>>` [blue]`1|2 / 1|3` +
[green]`3|2` +
[green]`3|2`
`>>>` [blue]`1|2 ./ 1|3` [gray]_// Force decimal division_ +
[green]`1.5` +
[green]`1.5`
`>>>` [blue]`-1|2` +
[green]`-1|2` +
[green]`-1|2`
`>>>` [blue]`1|-2` [gray]_// Invalid sign specification_ +
[red]_Eval Error: [1:3] infix operator "|" requires two non-nil operands, got 1_ +
[red]_Eval Error: [1:3] infix operator "|" requires two non-nil operands, got 1_
`>>>` [blue]`1|(-2)` +
[green]`-1|2`
// ----
Fractions can be used together with integers and floats in expressions.
.Examples
`>>>` [blue]`1|2 + 5` +
[green]`11|2` +
[green]`11|2`
`>>>` [blue]`4 - 1|2` +
[green]`7|2` +
[green]`7|2`
`>>>` [blue]`1.0 + 1|2` +
[green]`1.5`
@@ -281,12 +294,15 @@ Strings are character sequences enclosed between two double quote [blue]`"`.
.Examples
`>>>` [blue]`"I'm a string"` +
[green]`I'm a string` +
[green]`I'm a string`
`>>>` [blue]`"123abc?!"` +
[green]`123abc?!` +
[green]`123abc?!`
`>>>` [blue]`"123\nabc"` +
[green]`123` +
[green]`abc` +
[green]`abc`
`>>>` [blue]`"123\tabc"` +
[green]`123{nbsp}{nbsp}{nbsp}{nbsp}abc`
@@ -307,25 +323,30 @@ The items of strings can be accessed using the square `[]` operator.
.Item access syntax
====
_item_ = _string-expr_ "**[**" _integer-expr_ "**]**"
*_item_* = _string-expr_ "**[**" _integer-expr_ "**]**"
====
.Sub-string syntax
====
_sub-string_ = _string-expr_ "**[**" _integer-expr_ "**:**" _integer-expr_ "**]**"
*_sub-string_* = _string-expr_ "**[**" _integer-expr_ "**:**" _integer-expr_ "**]**"
====
.String examples
`>>>` [blue]`s="abcd"` [gray]_// assign the string to variable s_ +
[green]`"abcd"` +
[green]`"abcd"`
`>>>` [blue]`s[1]` [gray]_// char at position 1 (starting from 0)_ +
[green]`"b"` +
[green]`"b"`
`>>>` [blue]`s.[-1]` [gray]_// char at position -1, the rightmost one_ +
[green]`"d"` +
[green]`"d"`
`>>>` [blue]`\#s` [gray]_// number of chars_ +
[gren]`4` +
[gren]`4`
`>>>` [blue]`#"abc"` [gray]_// number of chars_ +
[green]`3` +
[green]`3`
`>>>` [blue]`s[1:3]` [gray]_// chars from position 1 to position 3 excluded_ +
[grean]`"bc"`
@@ -432,7 +453,7 @@ Array's items can be accessed using the index `[]` operator.
.Sub-array (or slice of array) syntax
====
*_slice_* = _string-expr_ "**[**" _integer-expr_ "**:**" _integer-expr_ "**]**"
*_slice_* = _string-expr_ "**[**" _integer-expr_ "**:**" _integer-expr_ "**]**"
====
.Items of list
@@ -457,10 +478,13 @@ Array's items can be accessed using the index `[]` operator.
`>>>` [blue]`#list` +
[green]`3`
`>>>` [blue]`index=2; ["a", "b", "c", "d"].index` +
`>>>` [blue]`index=2; ["a", "b", "c", "d"][index]` +
[green]`c`
`>>>` [blue]`["a", "b", "c", "d"][2:]` +
[green]`["c", "d"]`
=== Dictionaries
The _dictionary_, or _dict_, data-type is set of pairs _key/value_. It is also known as _map_ or _associative array_.
@@ -474,14 +498,11 @@ _empty-dict_ = "**{}**" +
_non-empty-dict_ = "**{**" _key-scalar_ "**:**" _any-value_ {"**,**" _key-scalar_ "**:**" _any-value} "**}**" +
====
.Examples
`>>>` [blue]`{1:"one", 2:"two"}` +
[green]`{1: "one", 2: "two"}` +
`>>>` [blue]`{"one":1, "two": 2}` +
[green]`{"one": 1, "two": 2}` +
`>>>` [blue]`{"sum":1+2+3, "prod":1*2*3}` +
[green]`{"sum": 6, "prod": 6}`
.Item access syntax
====
*_item_* = _dict-expr_ "**[**" _key-expr_ "**]**"
====
.Dict operators
[cols="^2,^2,4,5"]
@@ -489,11 +510,27 @@ _non-empty-dict_ = "**{**" _key-scalar_ "**:**" _any-value_ {"**,**" _key-scalar
| Symbol | Operation | Description | Examples
| [blue]`+` | _Join_ | Joins two dicts | [blue]`{1:"one"}+{6:"six"}` -> _{1: "one", 6: "six"}_
| [blue]`.` | _Dict item value_ | Item value of given key | [blue]`{"one":1, "two":2}."two"` -> _2_
| [blue]`[]` | _Dict item value_ | Item value of given key | [blue]`{"one":1, "two":2}["two"]` -> _2_
| [blue]`in` | _Key in dict_ | True if key is in dict | [blue]`"one" in {"one":1, "two":2}` -> _true_ +
[blue]`"six" in {"one":1, "two":2}` -> _false_
|===
.Examples
`>>>` [blue]`{1:"one", 2:"two"}` +
[green]`{1: "one", 2: "two"}`
`>>>` [blue]`{"one":1, "two": 2}` +
[green]`{"one": 1, "two": 2}`
`>>>` [blue]`{"sum":1+2+3, "prod":1*2*3}` +
[green]`{"sum": 6, "prod": 6}`
`>>>` [blue]`{"one":1, "two":2}["two"]` +
[green]`2`
`>>>` [blue]`d={"one":1, "two":2}; d["six"]=6; d` +
[green]`{"two": 2, "one": 1, "six": 6}`
== Variables
_Expr_, like most programming languages, supports variables. A variable is an identifier with an assigned value. Variables are stored in _contexts_.
@@ -509,17 +546,23 @@ NOTE: The assign operator [blue]`=` returns the value assigned to the variable.
.Examples
`>>>` [blue]`a=1` +
[green]`1` +
[green]`1`
`>>>` [blue]`a_b=1+2` +
[green]`1+2` +
[green]`1+2`
`>>>` [blue]`a_b` +
[green]`3` +
[green]`3`
`>>>` [blue]`x = 5.2 * (9-3)` [gray]_// The assigned value has the approximation error typical of the float data-type_ +
[green]`31.200000000000003` +
[green]`31.200000000000003`
`>>>` [blue]`x = 1; y = 2*x` +
[green]`2` +
[green]`2`
`>>>` [blue]`_a=2` +
[red]`Parse Error: [1:2] unexpected token "_"` +
[red]`Parse Error: [1:2] unexpected token "_"`
`>>>` [blue]`1=2` +
[red]`Parse Error: assign operator ("=") must be preceded by a variable`