diff --git a/STATUS.md b/docs/STATUS.md
similarity index 100%
rename from STATUS.md
rename to docs/STATUS.md
diff --git a/docs/SYNTAX.md b/docs/SYNTAX.md
new file mode 100644
index 0000000..ddbee32
--- /dev/null
+++ b/docs/SYNTAX.md
@@ -0,0 +1,962 @@
+# Table of Contents
+
+1. [Headlines and Sections](#Headlines_and_Sections)
+2. [Affiliated Keywords](#Affiliated_keywords)
+3. [Greater Elements](#Greater_Elements)
+ 1. [Greater Blocks](#Greater_Blocks)
+ 2. [Drawers and Property Drawers](#Drawers)
+ 3. [Dynamic Blocks](#Dynamic_Blocks)
+ 4. [Footnote Definitions](#Footnote_Definitions)
+ 5. [Inlinetasks](#Inlinetasks)
+ 6. [Plain Lists and Items](#Plain_Lists_and_Items)
+ 7. [Property Drawers](#Property_Drawers)
+ 8. [Tables](#Tables)
+4. [Elements](#Elements)
+ 1. [Babel Call](#Babel_Call)
+ 2. [Blocks](#Blocks)
+ 3. [Clock, Diary Sexp and Planning](#Clock,_Diary_Sexp_and_Planning)
+ 4. [Comments](#Comments)
+ 5. [Fixed Width Areas](#Fixed_Width_Areas)
+ 6. [Horizontal Rules](#Horizontal_Rules)
+ 7. [Keywords](#Keywords)
+ 8. [LaTeX Environments](#LaTeX_Environments)
+ 9. [Node Properties](#Node_Properties)
+ 10. [Paragraphs](#Paragraphs)
+ 11. [Table Rows](#Table_Rows)
+5. [Objects](#Objects)
+ 1. [Entities and LaTeX Fragments](#Entities_and_LaTeX_Fragments)
+ 2. [Export Snippets](#Export_Snippets)
+ 3. [Footnote References](#Footnote_References)
+ 4. [Inline Babel Calls and Source Blocks](#Inline_Babel_Calls_and_Source_Blocks)
+ 5. [Line Breaks](#Line_Breaks)
+ 6. [Links](#Links)
+ 7. [Macros](#Macros)
+ 8. [Targets and Radio Targets](#Targets_and_Radio_Targets)
+ 9. [Statistics Cookies](#Statistics_Cookies)
+ 10. [Subscript and Superscript](#Subscript_and_Superscript)
+ 11. [Table Cells](#Table_Cells)
+ 12. [Timestamps](#Timestamp)
+ 13. [Text Markup](#Emphasis_Markers)
+
+This document describes and comments Org syntax as it is currently
+read by its parser (Org Elements) and, therefore, by the export
+framework. It also includes a few comments on that syntax.
+
+A core concept in this syntax is that only headlines, sections,
+planning lines and property drawers are context-free, .
+Every other syntactical part only exists within specific environments.
+
+Three categories are used to classify these environments: “Greater
+elements”, “elements”, and “objects”, from the broadest scope to the
+narrowest. The word “element” is used for both Greater and non-Greater
+elements, the context should make that clear.
+
+The paragraph is the unit of measurement. An element defines
+syntactical parts that are at the same level as a paragraph,
+i.e. which cannot contain or be included in a paragraph. An object is
+a part that could be included in an element. Greater elements are all
+parts that can contain an element.
+
+Empty lines belong to the largest element ending before them. For
+example, in a list, empty lines between items belong are part of the
+item before them, but empty lines at the end of a list belong to the
+plain list element.
+
+Unless specified otherwise, case is not significant.
+
+
+
+# Headlines and Sections
+
+A headline is defined as:
+
+ STARS KEYWORD PRIORITY TITLE TAGS
+
+STARS is a string starting at column 0, containing at least one
+asterisk (and up to `org-inlinetask-min-level` if `org-inlinetask`
+library is loaded) and ended by a space character. The number of
+asterisks is used to define the level of the headline. It’s the
+sole compulsory part of a headline.
+
+KEYWORD is a TODO keyword, which has to belong to the list defined
+in `org-todo-keywords-1`. Case is significant.
+
+PRIORITY is a priority cookie, i.e. a single letter preceded by
+a hash sign # and enclosed within square brackets.
+
+TITLE can be made of any character but a new line. Though, it will
+match after every other part have been matched.
+
+TAGS is made of words containing any alpha-numeric character,
+underscore, at sign, hash sign or percent sign, and separated with
+colons.
+
+Examples of valid headlines include:
+
+ *
+
+ ** DONE
+
+ *** Some e-mail
+
+ **** TODO [#A] COMMENT Title :tag:a2%:
+
+If the first word appearing in the title is “COMMENT”, the headline
+will be considered as “commented”. Case is significant.
+
+If its title is `org-footnote-section`, it will be considered as
+a “footnote section”. Case is significant.
+
+If “ARCHIVE” is one of its tags, it will be considered as
+“archived”. Case is significant.
+
+A headline contains directly one section (optionally), followed by
+any number of deeper level headlines.
+
+A section contains directly any greater element or element. Only
+a headline can contain a section. As an exception, text before the
+first headline in the document also belongs to a section.
+
+As an example, consider the following document:
+
+ An introduction.
+
+ * A Headline
+
+ Some text.
+
+ ** Sub-Topic 1
+
+ ** Sub-Topic 2
+
+ *** Additional entry
+
+Its internal structure could be summarized as:
+
+ (document
+ (section)
+ (headline
+ (section)
+ (headline)
+ (headline
+ (headline))))
+
+
+
+# Affiliated Keywords
+
+With the exception of [inlinetasks](#Inlinetasks), [items](#Plain_Lists_and_Items), [planning](#Clock,_Diary_Sexp_and_Planning), [clocks](#Clock,_Diary_Sexp_and_Planning), [node
+properties](#Node_Properties) and [table rows](#Table_Rows), every other element type can be assigned
+attributes.
+
+This is done by adding specific keywords, named “affiliated
+keywords”, just above the element considered, no blank line
+allowed.
+
+Affiliated keywords are built upon one of the following patterns:
+“#+KEY: VALUE”, “#+KEY[OPTIONAL]: VALUE” or “#+ATTRBACKEND: VALUE”.
+
+KEY is either “CAPTION”, “HEADER”, “NAME”, “PLOT” or “RESULTS”
+string.
+
+BACKEND is a string constituted of alpha-numeric characters, hyphens
+or underscores.
+
+OPTIONAL and VALUE can contain any character but a new line. Only
+“CAPTION” and “RESULTS” keywords can have an optional value.
+
+An affiliated keyword can appear more than once if KEY is either
+“CAPTION” or “HEADER” or if its pattern is “#+ATTRBACKEND: VALUE”.
+
+“CAPTION”, “AUTHOR”, “DATE” and “TITLE” keywords can contain objects
+in their value and their optional value, if applicable.
+
+
+
+# Greater Elements
+
+Unless specified otherwise, greater elements can contain directly
+any other element or greater element excepted:
+
+- elements of their own type,
+- [node properties](#Node_Properties), which can only be found in [property drawers](#Property_Drawers),
+- [items](#Plain_Lists_and_Items), which can only be found in [plain lists](#Plain_Lists_and_Items).
+
+
+
+## Greater Blocks
+
+Greater blocks consist in the following pattern:
+
+ #+BEGIN_NAME PARAMETERS
+ CONTENTS
+ #+END_NAME
+
+NAME can contain any non-whitespace character.
+
+PARAMETERS can contain any character other than new line, and can
+be omitted.
+
+If NAME is “CENTER”, it will be a “center block”. If it is
+“QUOTE”, it will be a “quote block”.
+
+If the block is neither a center block, a quote block or a [block
+element](#Blocks), it will be a “special block”.
+
+CONTENTS can contain any element, except : a line `#+END_NAME` on
+its own. Also lines beginning with STARS must be quoted by
+a comma.
+
+
+
+## Drawers and Property Drawers
+
+Pattern for drawers is:
+
+ :NAME:
+ CONTENTS
+ :END:
+
+NAME can contain word-constituent characters, hyphens and
+underscores.
+
+CONTENTS can contain any element but another drawer.
+
+
+
+## Dynamic Blocks
+
+Pattern for dynamic blocks is:
+
+ #+BEGIN: NAME PARAMETERS
+ CONTENTS
+ #+END:
+
+NAME cannot contain any whitespace character.
+
+PARAMETERS can contain any character and can be omitted.
+
+
+
+## Footnote Definitions
+
+Pattern for footnote definitions is:
+
+ [fn:LABEL] CONTENTS
+
+It must start at column 0.
+
+LABEL is either a number or follows the pattern “fn:WORD”, where
+word can contain any word-constituent character, hyphens and
+underscore characters.
+
+CONTENTS can contain any element excepted another footnote
+definition. It ends at the next footnote definition, the next
+headline, two consecutive empty lines or the end of buffer.
+
+
+
+## Inlinetasks
+
+Inlinetasks are defined by `org-inlinetask-min-level` contiguous
+asterisk characters starting at column 0, followed by a whitespace
+character.
+
+Optionally, inlinetasks can be ended with a string constituted of
+`org-inlinetask-min-level` contiguous asterisk characters starting
+at column 0, followed by a space and the “END” string.
+
+Inlinetasks are recognized only after `org-inlinetask` library is
+loaded.
+
+
+
+## Plain Lists and Items
+
+Items are defined by a line starting with the following pattern:
+“BULLET COUNTER-SET CHECK-BOX TAG”, in which only BULLET is
+mandatory.
+
+BULLET is either an asterisk, a hyphen, a plus sign character or
+follows either the pattern “COUNTER.” or “COUNTER)”. In any case,
+BULLET is follwed by a whitespace character or line ending.
+
+COUNTER can be a number or a single letter.
+
+COUNTER-SET follows the pattern [@COUNTER].
+
+CHECK-BOX is either a single whitespace character, a “X” character
+or a hyphen, enclosed within square brackets.
+
+TAG follows “TAG-TEXT ::” pattern, where TAG-TEXT can contain any
+character but a new line.
+
+An item ends before the next item, the first line less or equally
+indented than its starting line, or two consecutive empty lines.
+Indentation of lines within other greater elements do not count,
+neither do inlinetasks boundaries.
+
+A plain list is a set of consecutive items of the same indentation.
+It can only directly contain items.
+
+If first item in a plain list has a counter in its bullet, the
+plain list will be an “ordered plain-list”. If it contains a tag,
+it will be a “descriptive list”. Otherwise, it will be an
+“unordered list”. List types are mutually exclusive.
+
+For example, consider the following excerpt of an Org document:
+
+ 1. item 1
+ 2. [X] item 2
+ - some tag :: item 2.1
+
+Its internal structure is as follows:
+
+ (ordered-plain-list
+ (item)
+ (item
+ (descriptive-plain-list
+ (item))))
+
+
+
+## Property Drawers
+
+Property drawers are a special type of drawer containing properties
+attached to a headline. They are located right after a [headline](#Headlines_and_Sections)
+and its [planning](#Clock,_Diary_Sexp_and_Planning) information.
+
+ HEADLINE
+ PROPERTYDRAWER
+
+ HEADLINE
+ PLANNING
+ PROPERTYDRAWER
+
+PROPERTYDRAWER follows the pattern
+
+ :PROPERTIES:
+ CONTENTS
+ :END:
+
+where CONTENTS consists of zero or more [node properties](#Node_Properties).
+
+
+
+## Tables
+
+Tables start at lines beginning with either a vertical bar or the
+“+-” string followed by plus or minus signs only, assuming they are
+not preceded with lines of the same type. These lines can be
+indented.
+
+A table starting with a vertical bar has “org” type. Otherwise it
+has “table.el” type.
+
+Org tables end at the first line not starting with a vertical bar.
+Table.el tables end at the first line not starting with either
+a vertical line or a plus sign. Such lines can be indented.
+
+An org table can only contain table rows. A table.el table does
+not contain anything.
+
+One or more “#+TBLFM: FORMULAS” lines, where “FORMULAS” can contain
+any character, can follow an org table.
+
+
+
+# Elements
+
+Elements cannot contain any other element.
+
+Only [keywords](#Keywords) whose name belongs to
+`org-element-document-properties`, [verse blocks](#Blocks) , [paragraphs](#Paragraphs) and
+[table rows](#Table_Rows) can contain objects.
+
+
+
+## Babel Call
+
+Pattern for babel calls is:
+
+ #+CALL: VALUE
+
+VALUE is optional. It can contain any character but a new line.
+
+
+
+## Blocks
+
+Like [greater blocks](#Greater_Blocks), pattern for blocks is:
+
+ #+BEGIN_NAME DATA
+ CONTENTS
+ #+END_NAME
+
+NAME cannot contain any whitespace character.
+
+If NAME is “COMMENT”, it will be a “comment block”. If it is
+“EXAMPLE”, it will be an “example block”. If it is “EXPORT”, it
+will be an “export block”. If it is “SRC”, it will be a “source
+block”. If it is “VERSE”, it will be a “verse block”.
+
+DATA can contain any character but a new line. It can be ommitted,
+unless the block is either a “source block” or an “export block”.
+
+In the latter case, it should be constituted of a single word.
+
+In the former case, it must follow the pattern “LANGUAGE SWITCHES
+ARGUMENTS”, where SWITCHES and ARGUMENTS are optional.
+
+LANGUAGE cannot contain any whitespace character.
+
+SWITCHES is made of any number of “SWITCH” patterns, separated by
+blank lines.
+
+A SWITCH pattern is either “-l ”FORMAT“”, where FORMAT can contain
+any character but a double quote and a new line, “-S” or “+S”,
+where S stands for a single letter.
+
+ARGUMENTS can contain any character but a new line.
+
+CONTENTS can contain any character, including new lines. Though it
+will only contain Org objects if the block is a verse block.
+Otherwise, CONTENTS will not be parsed.
+
+
+
+## Clock, Diary Sexp and Planning
+
+A clock follows either of the patterns below:
+
+ CLOCK: INACTIVE-TIMESTAMP
+ CLOCK: INACTIVE-TIMESTAMP-RANGE DURATION
+
+INACTIVE-TIMESTAMP, resp. INACTIVE-TIMESTAMP-RANGE, is an inactive,
+resp. inactive range, [timestamp](#Timestamp) object.
+
+DURATION follows the pattern:
+
+ => HH:MM
+
+HH is a number containing any number of digits. MM is a two digit
+numbers.
+
+A diary sexp is a line starting at column 0 with “%%(” string. It
+can then contain any character besides a new line.
+
+A planning is an element with the following pattern:
+
+ HEADLINE
+ PLANNING
+
+where HEADLINE is a [headline](#Headlines_and_Sections) element and PLANNING is a line filled
+with INFO parts, where each of them follows the pattern:
+
+ KEYWORD: TIMESTAMP
+
+KEYWORD is either “DEADLINE”, “SCHEDULED” or “CLOSED”. TIMESTAMP
+is a [timestamp](#Timestamp) object.
+
+In particular, no blank line is allowed between PLANNING and
+HEADLINE.
+
+
+
+## Comments
+
+A “comment line” starts with a hash signe and a whitespace
+character or an end of line.
+
+Comments can contain any number of consecutive comment lines.
+
+
+
+## Fixed Width Areas
+
+A “fixed-width line” start with a colon character and a whitespace
+or an end of line.
+
+Fixed width areas can contain any number of consecutive fixed-width
+lines.
+
+
+
+## Horizontal Rules
+
+A horizontal rule is a line made of at least 5 consecutive hyphens.
+It can be indented.
+
+
+
+## Keywords
+
+Keywords follow the syntax:
+
+ #+KEY: VALUE
+
+KEY can contain any non-whitespace character, but it cannot be
+equal to “CALL” or any affiliated keyword.
+
+VALUE can contain any character excepted a new line.
+
+If KEY belongs to `org-element-document-properties`, VALUE can
+contain objects.
+
+
+
+## LaTeX Environments
+
+Pattern for LaTeX environments is:
+
+ \begin{NAME} CONTENTS \end{NAME}
+
+NAME is constituted of alpha-numeric or asterisk characters.
+
+CONTENTS can contain anything but the “\end{NAME}” string.
+
+
+
+## Node Properties
+
+Node properties can only exist in [property drawers](#Property_Drawers). Their pattern
+is any of the following
+
+ :NAME: VALUE
+
+ :NAME+: VALUE
+
+ :NAME:
+
+ :NAME+:
+
+NAME can contain any non-whitespace character but cannot end with
+a plus sign. It cannot be the empty string.
+
+VALUE can contain anything but a newline character.
+
+
+
+## Paragraphs
+
+Paragraphs are the default element, which means that any
+unrecognized context is a paragraph.
+
+Empty lines and other elements end paragraphs.
+
+Paragraphs can contain every type of object.
+
+
+
+## Table Rows
+
+A table rows is either constituted of a vertical bar and any number
+of [table cells](#Table_Cells) or a vertical bar followed by a hyphen.
+
+In the first case the table row has the “standard” type. In the
+second case, it has the “rule” type.
+
+Table rows can only exist in [tables](#Tables).
+
+
+
+# Objects
+
+Objects can only be found in the following locations:
+
+- [affiliated keywords](#Affiliated_keywords) defined in `org-element-parsed-keywords`,
+- [document properties](#Keywords),
+- [headline](#Headlines_and_Sections) titles,
+- [inlinetask](#Inlinetasks) titles,
+- [item](#Plain_Lists_and_Items) tags,
+- [paragraphs](#Paragraphs),
+- [table cells](#Table_Cells),
+- [table rows](#Table_Rows), which can only contain table cell
+ objects,
+- [verse blocks](#Blocks).
+
+Most objects cannot contain objects. Those which can will be
+specified.
+
+
+
+## Entities and LaTeX Fragments
+
+An entity follows the pattern:
+
+ \NAME POST
+
+where NAME has a valid association in either `org-entities` or
+`org-entities-user`.
+
+POST is the end of line, “{}” string, or a non-alphabetical
+character. It isn’t separated from NAME by a whitespace character.
+
+A LaTeX fragment can follow multiple patterns:
+
+ \NAME BRACKETS
+ \(CONTENTS\)
+ \[CONTENTS\]
+ $$CONTENTS$$
+ PRE$CHAR$POST
+ PRE$BORDER1 BODY BORDER2$POST
+
+NAME contains alphabetical characters only and must not have an
+association in either `org-entities` or `org-entities-user`.
+
+BRACKETS is optional, and is not separated from NAME with white
+spaces. It may contain any number of the following patterns:
+
+ [CONTENTS1]
+ {CONTENTS2}
+
+where CONTENTS1 can contain any characters excepted “{” “}”, “[”
+“]” and newline and CONTENTS2 can contain any character excepted
+“{”, “}” and newline.
+
+CONTENTS can contain any character but cannot contain “\\)” in the
+second template or “\\]” in the third one.
+
+PRE is either the beginning of line or a character different from
+`$`.
+
+CHAR is a non-whitespace character different from `.`, `,`, `?`,
+`;`, `'` or a double quote.
+
+POST is any punctuation (including parentheses and quotes) or space
+character, or the end of line.
+
+BORDER1 is a non-whitespace character different from `.`, `,`, `;`
+and `$`.
+
+BODY can contain any character excepted `$`, and may not span over
+more than 3 lines.
+
+BORDER2 is any non-whitespace character different from `,`, `.` and
+`$`.
+
+---
+
+> It would introduce incompatibilities with previous Org versions,
+> but support for `$...$` (and for symmetry, `$$...$$`) constructs
+> ought to be removed.
+>
+> They are slow to parse, fragile, redundant and imply false
+> positives. — ngz
+
+
+
+## Export Snippets
+
+Patter for export snippets is:
+
+ @@NAME:VALUE@@
+
+NAME can contain any alpha-numeric character and hyphens.
+
+VALUE can contain anything but “@@” string.
+
+
+
+## Footnote References
+
+There are four patterns for footnote references:
+
+ [fn:LABEL]
+ [fn:LABEL:DEFINITION]
+ [fn::DEFINITION]
+
+LABEL can contain any word constituent character, hyphens and
+underscores.
+
+DEFINITION can contain any character. Though opening and closing
+square brackets must be balanced in it. It can contain any object
+encountered in a paragraph, even other footnote references.
+
+If the reference follows the second pattern, it is called an
+“inline footnote”. If it follows the third one, i.e. if LABEL is
+omitted, it is an “anonymous footnote”.
+
+
+
+## Inline Babel Calls and Source Blocks
+
+Inline Babel calls follow any of the following patterns:
+
+ call_NAME(ARGUMENTS)
+ call_NAME[HEADER](ARGUMENTS)[HEADER]
+
+NAME can contain any character besides `(`, `)` and “\n”.
+
+HEADER can contain any character besides `]` and “\n”.
+
+ARGUMENTS can contain any character besides `)` and “\n”.
+
+Inline source blocks follow any of the following patterns:
+
+ src_LANG{BODY}
+ src_LANG[OPTIONS]{BODY}
+
+LANG can contain any non-whitespace character.
+
+OPTIONS and BODY can contain any character but “\n”.
+
+
+
+## Line Breaks
+
+A line break consists in “\\\SPACE” pattern at the end of an
+otherwise non-empty line.
+
+SPACE can contain any number of tabs and spaces, including 0.
+
+
+
+## Links
+
+There are 4 major types of links:
+
+ PRE1 RADIO POST1 ("radio" link)
+ ("angle" link)
+ PRE2 PROTOCOL:PATH2 POST2 ("plain" link)
+ [[PATH3]DESCRIPTION] ("regular" link)
+
+PRE1 and POST1, when they exist, are non alphanumeric characters.
+
+RADIO is a string matched by some [radio target](#Targets_and_Radio_Targets). It may contain
+[entities](#Entities_and_LaTeX_Fragments), [latex fragments](#Entities_and_LaTeX_Fragments), [subscript](#Subscript_and_Superscript) and [superscript](#Subscript_and_Superscript).
+
+PROTOCOL is a string among `org-link-types`.
+
+PATH can contain any character but `]`, `<`, `>` and `\n`.
+
+PRE2 and POST2, when they exist, are non word constituent
+characters.
+
+PATH2 can contain any non-whitespace character excepted `(`, `)`,
+`<` and `>`. It must end with a word-constituent character, or any
+non-whitespace non-punctuation character followed by `/`.
+
+DESCRIPTION must be enclosed within square brackets. It can
+contain any character but square brackets. It can contain any
+object found in a paragraph excepted a [footnote reference](#Footnote_References), a [radio
+target](#Targets_and_Radio_Targets) and a [line break](#Line_Breaks). It cannot contain another link either,
+unless it is a plain or angular link.
+
+DESCRIPTION is optional.
+
+PATH3 is built according to the following patterns:
+
+ FILENAME ("file" type)
+ PROTOCOL:PATH4 ("PROTOCOL" type)
+ PROTOCOL://PATH4 ("PROTOCOL" type)
+ id:ID ("id" type)
+ #CUSTOM-ID ("custom-id" type)
+ (CODEREF) ("coderef" type)
+ FUZZY ("fuzzy" type)
+
+FILENAME is a file name, either absolute or relative.
+
+PATH4 can contain any character besides square brackets.
+
+ID is constituted of hexadecimal numbers separated with hyphens.
+
+PATH4, CUSTOM-ID, CODEREF and FUZZY can contain any character
+besides square brackets.
+
+
+
+## Macros
+
+Macros follow the pattern:
+
+ {{{NAME(ARGUMENTS)}}}
+
+NAME must start with a letter and can be followed by any number of
+alpha-numeric characters, hyphens and underscores.
+
+ARGUMENTS can contain anything but “}}}” string. Values within
+ARGUMENTS are separated by commas. Non-separating commas have to
+be escaped with a backslash character.
+
+
+
+## Targets and Radio Targets
+
+Radio targets follow the pattern:
+
+ <<>>
+
+CONTENTS can be any character besides `<`, `>` and “\n”. It cannot
+start or end with a whitespace character. As far as objects go, it
+can contain [text markup](#Emphasis_Markers), [entities](#Entities_and_LaTeX_Fragments), [latex fragments](#Entities_and_LaTeX_Fragments), [subscript](#Subscript_and_Superscript) and
+[superscript](#Subscript_and_Superscript) only.
+
+Targets follow the pattern:
+
+ <>
+
+TARGET can contain any character besides `<`, `>` and “\n”. It
+cannot start or end with a whitespace character. It cannot contain
+any object.
+
+
+
+## Statistics Cookies
+
+Statistics cookies follow either pattern:
+
+ [PERCENT%]
+ [NUM1/NUM2]
+
+PERCENT, NUM1 and NUM2 are numbers or the empty string.
+
+
+
+## Subscript and Superscript
+
+Pattern for subscript is:
+
+ CHAR_SCRIPT
+
+Pattern for superscript is:
+
+ CHAR^SCRIPT
+
+CHAR is any non-whitespace character.
+
+SCRIPT can be `*` or an expression enclosed in parenthesis
+(respectively curly brackets), possibly containing balanced
+parenthesis (respectively curly brackets).
+
+SCRIPT can also follow the pattern:
+
+ SIGN CHARS FINAL
+
+SIGN is either a plus sign, a minus sign, or an empty string.
+
+CHARS is any number of alpha-numeric characters, commas,
+backslashes and dots, or an empty string.
+
+FINAL is an alpha-numeric character.
+
+There is no white space between SIGN, CHARS and FINAL.
+
+
+
+## Table Cells
+
+Table cells follow the pattern:
+
+ CONTENTS SPACES|
+
+CONTENTS can contain any character excepted a vertical bar.
+
+SPACES contains any number of space characters, including zero. It
+can be used to align properly the table.
+
+The final bar may be replaced with a newline character for the last
+cell in row.
+
+
+
+## Timestamps
+
+There are seven possible patterns for timestamps:
+
+ <%%(SEXP)> (diary)
+ (active)
+ [DATE TIME REPEATER-OR-DELAY] (inactive)
+ -- (active range)
+ (active range)
+ [DATE TIME REPEATER-OR-DELAY]--[DATE TIME REPEATER-OR-DELAY] (inactive range)
+ [DATE TIME-TIME REPEATER-OR-DELAY] (inactive range)
+
+SEXP can contain any character excepted `>` and `\n`.
+
+DATE follows the pattern:
+
+ YYYY-MM-DD DAYNAME
+
+`Y`, `M` and `D` are digits. DAYNAME can contain any non
+whitespace-character besides `+`, `-`, `]`, `>`, a digit or `\n`.
+
+TIME follows the pattern `H:MM`. `H` can be one or two digit long
+and can start with 0.
+
+REPEATER-OR-DELAY follows the pattern:
+
+ MARK VALUE UNIT
+
+MARK is `+` (cumulate type), `++` (catch-up type) or `.+` (restart
+type) for a repeater, and `-` (all type) or `--` (first type) for
+warning delays.
+
+VALUE is a number.
+
+UNIT is a character among `h` (hour), `d` (day), `w` (week), `m`
+(month), `y` (year).
+
+MARK, VALUE and UNIT are not separated by whitespace characters.
+
+There can be two REPEATER-OR-DELAY in the timestamp: one as
+a repeater and one as a warning delay.
+
+
+
+## Text Markup
+
+Text markup follows the pattern:
+
+ PRE MARKER CONTENTS MARKER POST
+
+PRE is a whitespace character, `(`, `{` `'` or a double quote. It
+can also be a beginning of line.
+
+MARKER is a character among `*` (bold), `=` (verbatim), `/`
+(italic), `+` (strike-through), `_` (underline), `~` (code).
+
+CONTENTS is a string following the pattern:
+
+ BORDER BODY BORDER
+
+BORDER can be any non-whitespace character excepted `,`, `'` or
+a double quote.
+
+BODY can contain contain any character but may not span over more
+than 3 lines.
+
+BORDER and BODY are not separated by whitespaces.
+
+CONTENTS can contain any object encountered in a paragraph when
+markup is “bold”, “italic”, “strike-through” or “underline”.
+
+POST is a whitespace character, `-`, `.`, `,`, `:`, `!`, `?`, `'`,
+`)`, `}` or a double quote. It can also be an end of line.
+
+PRE, MARKER, CONTENTS, MARKER and POST are not separated by
+whitespace characters.
+
+---
+
+> All of this is wrong if `org-emphasis-regexp-components` or
+> `org-emphasis-alist` are modified.
+>
+> This should really be simplified.
+>
+> Also, CONTENTS should be anything within code and verbatim
+> emphasis, by definition. — ngz
+
+# Footnotes
+
+1 In particular, the parser requires stars at column 0 to be
+quoted by a comma when they do not define a headline.
+
+2 It also means that only headlines and sections can be
+recognized just by looking at the beginning of the line. Planning
+lines and property drawers can be recognized by looking at one or two
+lines above.
+
+As a consequence, using `org-element-at-point` or
+`org-element-context` will move up to the parent headline, and parse
+top-down from there until context around original location is found.