summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--doc/manual.rst31
1 files changed, 30 insertions, 1 deletions
diff --git a/doc/manual.rst b/doc/manual.rst
index bfcce24cf..bbc8bb225 100644
--- a/doc/manual.rst
+++ b/doc/manual.rst
@@ -8,7 +8,7 @@ Nim Manual
 .. contents::
 
 
-  "Complexity" seems to be a lot like "energy": you can transfer it from the 
+  "Complexity" seems to be a lot like "energy": you can transfer it from the
   end-user to one/some of the other players, but the total amount seems to remain
   pretty much constant for a given task. -- Ran
 
@@ -313,6 +313,35 @@ it was not case-sensitive and underscores were ignored and there was not even a
 distinction between ``foo`` and ``Foo``.
 
 
+Stropping
+---------
+
+`Stropping <https://en.wikipedia.org/wiki/Stropping_(syntax)>`_
+allows the same letter sequence to be used both as a keyword and as an identifier, and simplifies parsing.
+For example, allowing a variable named `if` without clashing with the keyword `if`.
+In Nim, this is achieved via backticks, allowing any reserved word to be used as an identifier.
+
+Examples
+
+.. code-block:: nim
+  var `var` = "Hello Stropping"
+
+.. code-block:: nim
+  type Type = object
+  `int`: int
+
+  let `object` = Type(`int`: 9)
+  assert `object` is Type
+  assert `object`.`int` == 9
+
+  var `var` = 42
+  let `let` = 8
+  assert `var` + `let` == 50
+
+  const `assert` = true
+  assert `assert`
+
+
 String literals
 ---------------