(Arne Babenhauserheide)
2014-05-02: srfi: use the 8 rules from the website. srfi: use the 8 rules from the website.
diff --git a/docs/srfi.org b/docs/srfi.org
--- a/docs/srfi.org
+++ b/docs/srfi.org
@@ -232,17 +232,81 @@ The syntax shown here is the minimal syn
- =:= for double parens
- =_= to survive HTML
-** More detailed
+** More detailed: Wisp syntax rules
-*** Wisp syntax rules
+1. *A line without indentation is a function call*, just as if it would start with a bracket.
-1. *A line without indentation is a function call*, just as if it would start with a parenthesis.
-2. *A line which is more indented than the previous line is a sibling to that line*: It opens a new parenthesis.
-3. *A line which is not more indented than previous line(s) closes the parentheses of all previous lines which have higher or equal indentation*.
-4. *A line whose first non-whitespace characters are a dot followed by a space (". ") does not open a new parenthesis: it is treated as simple continuation of the first less indented previous line*. In the first line this means that this line does not start with a parenthesis and does not end with a parenthesis, just as if you had directly written it in regular scheme without the leading ". ".
-5. *A line which contains only whitespace and a colon (":") defines an indentation level at the indentation of the colon*. It opens a parenthesis which gets closed by the next less- or equally-indented line. If you need to use a colon by itself. you can escape it as "\:".
-6. *To add any of ' , ` #' #, #` or #@, to a parenthesis, just prefix the line with that symbol* followed by at least one space. Implementations are free to add more prefix symbols.
-7. *You can replace any number of consecutive initial spaces by underscores*, as long as at least one whitespace is left between the underscores and any following character. You can escape initial underscores by prefixing the first one with \ ("\___ a" → "(___ a)"). This allows you to use them as function names at the beginning of the line.
+#+BEGIN_SRC wisp
+ display "Hello World!" ; (display "Hello World!")
+#+END_SRC
+
+
+
+2. *A line which is more indented than the previous line is a sibling to that line*: It opens a new bracket.
+
+#+BEGIN_SRC wisp
+ display ; (display
+ string-append "Hello " "World!" ; (string-append "Hello " "World!"))
+#+END_SRC
+
+
+
+3. *A line which is not more indented than previous line(s) closes the brackets of all previous lines which have higher or equal indentation*. You should only reduce the indentation to indentation levels which were already used by parent lines, else the behaviour is undefined.
+
+#+BEGIN_SRC wisp
+ display ; (display
+ string-append "Hello " "World!" ; (string-append "Hello " "World!"))
+ display "Hello Again!" ; (display "Hello Again!")
+#+END_SRC
+
+
+
+4. *To add any of ' , ` #' #, #` or #@, to the first bracket on a line, just prefix the line with that symbol* followed by at least one space. Implementations are free to add more prefix symbols.
+
+#+BEGIN_SRC wisp
+ ' "Hello World!" ; '("Hello World!")
+#+END_SRC
+
+
+
+5. *A line whose first non-whitespace characters are a dot followed by a space (". ") does not open a new bracket: it is treated as simple continuation of the first less indented previous line*. In the first line this means that this line does not start with a bracket and does not end with a bracket, just as if you had directly written it in lisp without the leading ". ".
+
+#+BEGIN_SRC wisp
+ string-append "Hello" ; (string-append "Hello"
+ string-append " " "World" ; (string-append " " "World")
+ . "!" ; "!")
+#+END_SRC
+
+
+
+6. *A line which contains only whitespace and a colon (":") defines an indentation level at the indentation of the colon*. It opens a bracket which gets closed by the next less-indented line. If you need to use a colon by itself. you can escape it as "\:".
+
+#+BEGIN_SRC wisp
+ let ; (let
+ : ; ((msg "Hello World!"))
+ msg "Hello World!" ; (display msg))
+ display msg ;
+#+END_SRC
+
+
+
+7. *A colon sourrounded by whitespace (" : ") starts a bracket which gets closed at the end of the line*.
+
+#+BEGIN_SRC wisp
+ define : hello who ; (define (hello who)
+ display ; (display
+ string-append "Hello " who "!" ; (string-append "Hello " who "!")))
+#+END_SRC
+
+
+8. *You can replace any number of consecutive initial spaces by underscores*, as long as at least one whitespace is left between the underscores and any following character. You can escape initial underscores by prefixing the first one with \ ("\___ a" → "(___ a)"), if you have to use them as function names.
+
+#+BEGIN_SRC wisp
+ define : hello who ; (define (hello who)
+ _ display ; (display
+ ___ string-append "Hello " who "!" ; (string-append "Hello " who "!")))
+#+END_SRC
+
** Clarifications