<p>
Objects and Contents can include any characters allowed by the specifications.
The specification may choose how a given Object or Content are represented and parsed.
- For example, in <code class="code">fss-0000 (Basic)</code>, Content is treated as a single item whereas in <code class="code">fss-0001 (Extended)</code>, Content is broken apart in multiple sub parts.
+ For example, in <code class="code">fss-0000 (Basic)</code>, Content is treated as a single item whereas in <code class="code">fss-0001 (Extended)</code>, Content is broken apart in multiple sub-parts.
</p>
<p>
Contents may be broken up into zero or more discrete sets of Content.
<p>
Unless otherwise specified, all specifications are newline sensitive (<code class="code">\n</code> only).
Newline characters are only <code class="code">\n</code> and are never anything else (<code class="code">\r</code> is not considered newline in any manner).
+ These specifications refer to characters that have printable representation as <em>printable</em>.
+ These specifications refer to characters that have no printable representation as <em>non-printable</em>.
+
White spaces characters that are printable, such as tabs and spaces, must be considered the same type for the purposes of parsing.
- Non-printing white spaces characters (zero-width characters) are ignored, are treated as placeholders for processing, or are considered part of the appropriate character if they are Unicode combining characters (this includes zero-width punctuation characters and similar).
+ Non-printing white spaces characters (zero-width characters) are ignored, are treated as placeholders for processing with the exception of combining characters.
+ White spaces that use combining characters result in printable characters and the resulting combination is treated as not white space.
+ Zero-width characters that use combining characters are treated as non-printing characters and are skipped.
In terms of processing, it is recommended that the <code class="code">NULL</code> character is not considered the end of a string, but this is only a suggestion.
+ Any specification may chose to limit, restrict, or otherwise prohibit special Unicode characters such as combining characters or zero-width characters.
</p>
<p>
Unless otherwise specified, newlines designate the potential start (or end) of an Object or Content.
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as part of the object.
White space separates an Object from the Content.
An Object may be preceded by a newline, in which case means that the Object has no Content.
- If only printing white space follows a valid Object, that Object is considered to have no Content.
+ If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
</p>
<p>
Content exists on the same line as the Object.
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
White space separates an Object from the Content.
An Object may be followed by a newline, in which case means that the Object has no Content.
- If only printing white space follows a valid Object, that Object is considered to have no Content.
+ If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
</p>
<p>
Content exists on the same line as the Object.
<div class="section-content">
<p>
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
- A colon followed by any white space until a newline terminates a valid Object.
- Non-white space may not follow the colon of a valid Object.
+ A colon <code class="code">:</code> (<code class="code">U+003A</code>) followed by any white space until a newline terminates a valid Object.
+ Non-white space printable characters may not follow the colon of a valid Object.
</p>
<p>
Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until the next valid Object is found.
</p>
<ul>
<li><code class="code">\s</code> = White space, except newline.</li>
- <li><code class="code">\o</code> = Any printable character, except unescaped ':'.</li>
- <li><code class="code">\l</code> = Any printable character or white space, except unescaped ':'.</li>
+ <li><code class="code">\o</code> = Any printable character, except unescaped <code class="code">:</code> (<code class="code">U+003A</code>).</li>
+ <li><code class="code">\l</code> = Any printable character or white space, except unescaped <code class="code">:</code> (<code class="code">U+003A</code>).</li>
<li><code class="code">\c</code> = either white space or printable, including newline, that not interpretable as an Object.</li>
<li><code class="code">\n</code> = Newline.</li>
<li><code class="code">*</code> = Zero or more occurrences.</li>
<div class="section-content">
<p>
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
- An open-brace <code class="code">{</code> followed by any white space until a newline terminates a possible valid Object.
- An Object is not considered fully valid until a valid close-brace <code class="code">}</code> is found, designating the end of the Content.
- Non-white space may not follow the open-brace of a valid Object.
+ An open-brace <code class="code">{</code> (<code class="code">U+007B</code>) followed by any white space until a newline terminates a possible valid Object.
+ An Object is not considered fully valid until a valid close-brace <code class="code">}</code> (<code class="code">U+007D</code>) is found, designating the end of the Content.
+ Non-white space printable characters may not follow the open-brace of a valid Object.
</p>
<p>
Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until a non-delimited close-brace <code class="code">}</code>.
</p>
<ul>
<li><code class="code">\s</code> = White space, except newline.</li>
- <li><code class="code">\o</code> = Any printable character, except unescaped <code class="code">{</code>.</li>
- <li><code class="code">\l</code> = Any printable character or white space, except unescaped <code class="code">}</code>.</li>
+ <li><code class="code">\o</code> = Any printable character, except unescaped <code class="code">{</code> (<code class="code">U+007B</code>).</li>
+ <li><code class="code">\l</code> = Any printable character or white space, except unescaped <code class="code">}</code> (<code class="code">U+007D</code>).</li>
<li><code class="code">\c</code> = Either white space or printable, including newline, that is not interpretable as an Object.</li>
<li><code class="code">\n</code> = Newline.</li>
<li><code class="code">*</code> = Zero or more occurrences.</li>
Each Object starts at the end of a line and white space to the left of the Object is not treated as part of the object.
White space separates an Object from the Content.
An Object may be preceded by a newline, in which case means that the Object has no Content.
- If only printing white space precedes a valid Object, that Object is considered to have no Content.
+ If only printing white spaces or non-printable characters precedes a valid Object, then that Object is considered to have no Content.
</p>
<p>
Content exists on the same line as the Object.
Each Object starts at the end of a line and white space to the left of the Object is not treated as an object.
White space separates an Object from the Content.
An Object may be followed by a newline, in which case means that the Object has no Content.
- If only printing white space follows a valid Object, that Object is considered to have no Content.
+ If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
</p>
<p>
Content exists on the same line as the Object.
<div class="section-content">
<p>
- This might be similar to <code class="code">fss-0008 (Embedded List)</code>, except it is an <code class="code">fss-0003 (Extended List)</code> with a (non-recursive) <code class="code">fss-0002 (Basic List)</code> inside the Content.
+ This is similar to <code class="code">fss-0008 (Embedded List)</code>, except it is an <code class="code">fss-0003 (Extended List)</code> with a (non-recursive) <code class="code">fss-0002 (Basic List)</code> inside the Content.
</p>
<p>
See the <a href="fll/specifications/fss/fss-0002.html" class="link">fss-0002 (Basic List)</a> and <a href="fll/specifications/fss/fss-0003.html" class="link">fss-0003 (Extended List)</a> specifications for details on the syntax rules.