新版Tin标记语言(TinML)的语法沿用了上一版的语法,但是根据“易读性”进行了改进。
总体上,TinML的标记语法为<标签名>(参数1)(参数2)(...)
。
TinML的语法依然简单,分为单行标记、多行标记
最常用的标记文本。
<tagname>arg1|arg2|...
在新版TinML中,使用“ | ”分割标记参数。标记参数可以被理解为内容与指令。内容,就是要渲染的内容,而指令,就是告诉渲染器最终该如何呈现内容。 |
旧版中使用“;”分割,语法高亮中不显眼。
TinML中,大部分以参数形式确定渲染内容,比如<title>二级标题|2
。这种情况下,不同位置的参数拥有严格的含义,比如<img>name|url|size
,照片名称、地址、尺寸等,是不能够混淆的,这些对最后的渲染有着决定影响作用。
部分参数文本以内部标记形式存在。这些参数并非要严格遵循,但是同样在解释与渲染时会起到作用,比如<p>*bold|_underline|![link](url)
,这些具有开头特殊标记文本的内容,也是在告诉渲染器最终要如何呈现这部分内容。
单行标记中,由
%VEB%
转义|
。
新版TinML支持规范的多行标记格式。
<tagname>arg1;
|arg2
|arg3
...
|end-arg|
第一个参数后加;
,开启多行标记模式。每一个行开头加|
,代表这是一个参数。最后一个参数末尾加|
,表示该标签标记结束。其它任何位置的|
不具有标记意义。
多行标记能够分离大块的内容与简洁的参数,以一长串引用说明文本为例。TinML的<n>
的每一个参数都单独占一行,在编写式写在一行就会像下面这样:
<n>paragraph1paragraph1paragraph1|paragraph2paragraph2paragraph2|paragraph3paragraph3paragraph3
这样不方便作者编写、也不符合呈现逻辑。所以,可以用多行写法:
<n>paragraph1paragraph1paragraph1;
|paragraph2paragraph2paragraph2
|paragraph3paragraph3paragraph3|
另外,多行标记模式也可以用作区分标记参数。比如:
<url>text;
|url
|description|
这样的写法,使该标签的呈现内容、含义、参数信息清晰明了。
多行标记中允许空行与注释。
新版TinML使用开头|-
作为注释行标记。
注意,<p>
只代表一个文本段落,因此多行表达是不被推荐的。若多行表达中存在|-
,则作为注释忽略,不会理解成删除线。如果-
标记不在首位,则当作正常参数解析。
TinML只忽略空行与注释,无标签标记文本按照<p>
标记一个参数处理。