@TOC
前言
本文仅作为笔记记录。
本篇文章中,我们将规定Tin标记语言的语法。
Tin标记语言简介
Tin标记语言在2020年就被创建,详见专栏Tin标记语言,那个时候的实现同样是基于python.tkinter的TinReader(TinGroup),拥有如下特性:
-
简单的标记语法(稍稍比Markdown麻烦,但是在元素标签类标记语言中很简单)
-
即时呈现,读者思维跟着写者
-
整体编写简洁,不需要大量排版
当然了,稍微比markdown麻烦一点的语法是不想写太复杂的解析器,这次也不想写,所以语法设计上会延续上一代Tin标记语言的语法,但是会进行一些规范化的改良。
所以,这次相当于是重写整个TinReader(TinGroup),同样实现下列目标:
-
简单的标记语法
-
即时呈现
-
整体编写更加简洁
-
转释为html、md等(如果转释目标支持)
那我们先来定义一下语法吧。
Tin标记语法
常规类:
<tag-name>arg1|arg2|...
很简单,就是先写明一个标签,然后填值。其中arg1
是跟着标签一起解析的,所以是必然存在的,不论是否为空值。在原来的Tin标记语言中,使用分号间隔,这里使用竖线间隔。
常规类的多行表达式:
<tag-name>arg1;
|tag2
|...
|tagn|
多行表达式比单行在某些情况下能使文本更加直观,比如图片标签,在Tin标记语言中:
<img>picture.png;
|[pic-url]
|200 x 300|
规范就是标签一行结尾使用;
,接下来的每一行,如果想要表达内容或参数的话,就需要开头加上|
,最后一行末尾也要加上|
。
注释类:
|-注释
在原来的Tin标记语言中,注释使用;
开头。很难说那个更好,但是这个看起来像是注释,吧。
转义替换
%VEB% -> |
在原本的Tin标记语言中,使用@NAME@ -> CHAR
,用@
还是太别扭了。