summary refs log tree commit diff stats
path: root/doc/manual/syntax.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manual/syntax.txt')
-rw-r--r--doc/manual/syntax.txt81
1 files changed, 0 insertions, 81 deletions
diff --git a/doc/manual/syntax.txt b/doc/manual/syntax.txt
deleted file mode 100644
index f3ace9f56..000000000
--- a/doc/manual/syntax.txt
+++ /dev/null
@@ -1,81 +0,0 @@
-Syntax
-======
-
-This section lists Nim's standard syntax. How the parser handles
-the indentation is already described in the `Lexical Analysis`_ section.
-
-Nim allows user-definable operators.
-Binary operators have 11 different levels of precedence.
-
-
-
-Associativity
--------------
-
-Binary operators whose first character is ``^`` are right-associative, all
-other binary operators are left-associative.
-
-.. code-block:: nim
-  proc `^/`(x, y: float): float =
-    # a right-associative division operator
-    result = x / y
-  echo 12 ^/ 4 ^/ 8 # 24.0 (4 / 8 = 0.5, then 12 / 0.5 = 24.0)
-  echo 12  / 4  / 8 # 0.375 (12 / 4 = 3.0, then 3 / 8 = 0.375)
-
-Precedence
-----------
-
-Unary operators always bind stronger than any binary
-operator: ``$a + b`` is ``($a) + b`` and not ``$(a + b)``.
-
-If an unary operator's first character is ``@`` it is a `sigil-like`:idx:
-operator which binds stronger than a ``primarySuffix``: ``@x.abc`` is parsed
-as ``(@x).abc`` whereas ``$x.abc`` is parsed as ``$(x.abc)``.
-
-
-For binary operators that are not keywords the precedence is determined by the
-following rules:
-
-Operators ending in either ``->``, ``~>`` or ``=>`` are called
-`arrow like`:idx:, and have the lowest precedence of all operators.
-
-If the operator ends with ``=`` and its first character is none of
-``<``, ``>``, ``!``, ``=``, ``~``, ``?``, it is an *assignment operator* which
-has the second lowest precedence.
-
-Otherwise precedence is determined by the first character.
-
-================  ===============================================  ==================  ===============
-Precedence level    Operators                                      First character     Terminal symbol
-================  ===============================================  ==================  ===============
- 10 (highest)                                                      ``$  ^``            OP10
-  9               ``*    /    div   mod   shl  shr  %``            ``*  %  \  /``      OP9
-  8               ``+    -``                                       ``+  -  ~  |``      OP8
-  7               ``&``                                            ``&``               OP7
-  6               ``..``                                           ``.``               OP6
-  5               ``==  <= < >= > !=  in notin is isnot not of``   ``=  <  >  !``      OP5
-  4               ``and``                                                              OP4
-  3               ``or xor``                                                           OP3
-  2                                                                ``@  :  ?``         OP2
-  1               *assignment operator* (like ``+=``, ``*=``)                          OP1
-  0 (lowest)      *arrow like operator* (like ``->``, ``=>``)                          OP0
-================  ===============================================  ==================  ===============
-
-
-Whether an operator is used a prefix operator is also affected by preceding
-whitespace (this parsing change was introduced with version 0.13.0):
-
-.. code-block:: nim
-  echo $foo
-  # is parsed as
-  echo($foo)
-
-
-Grammar
--------
-
-The grammar's start symbol is ``module``.
-
-.. include:: ../grammar.txt
-   :literal:
-