我设计了一种文本标记格式,用来代替 Markdown 格式。请大家一定来夸我,或者拍砖:)

2016-02-03 23:12:11 +08:00
 zxgngl

它的语法特别简单,只有一条:

(标签 属性 1=|属性内容 1| 属性 2=|属性内容 2| . 内容)

虽然它的语法简单,但语义十分强大,强大到与 XML (或 HTML ) 的语义表达能力一样。

例子们:

图片:

(img src=|photo.jpg| width=|60px| height=|40px|)

说明:如果没有“内容”的话,“.”可以省略。

代码:

(@code lang=|C++| .
#include <iostream>

int main()
{
    std::cout << "Hello, World!\n";
}
@)

说明:不需要对插入的代码中的“(”和")"进行任何“转义”,只需要使用“(@”和“@)”来代替“(”和")"即可。“@”的个数个可以任意多,只要前后匹配即可。

代码 2 :

(@@code lang=|Scheme| .
(define weird-string
  (lambda ()
    "(@)"))
@@)

说明:无论插入的代码中包含任何字符或字符串,都不需要转义。

普通的文本格式化可以很简单:

(p . 这个句子里有(i . 斜体)字。)

希望大家喜欢,有什么问题请留言:)

13640 次点击
所在节点    程序员
144 条回复
zxgngl
2016-02-04 15:29:12 +08:00
@KylinRoc

(div class=|顽皮地一笑| .
:)
)
haroldwu
2016-02-04 15:32:47 +08:00
@zxgngl clojure 有個套件叫 hiccup 滿類似的
zxgngl
2016-02-04 15:33:26 +08:00
@Arthur2e5 很有启发,而且有的地方还很相似。谢谢~
SilentDepth
2016-02-04 15:42:35 +08:00
私以为,主题帖里的方案太类似「程序语言」,用了太多的字符去描述并不十分重要的「格式」。最重要的是内容啊,格式应与内容脱离开来,不然不就成了上世纪的 HTML 了吗。

Markdown 的优点在于,它只用了很少量的符号去描述内容的类型,并且尽可能做到不干扰原始文本(源代码)的阅读。基于这个优点,不具备程序背景的人也可以轻松享受 Markdown 带来的便利(同时我也从不认为 Markdown 是程序员的私有玩具)。对于大多数情况,文本足够说清内容,各主流 Markdown 实现的插入图片功能用起来也毫无压力。

所以我觉得,楼主要么误解了 Markdown 的目的,要么选错了对手或方向。

@StarBrilliant 回想看到过的有限的邮件列表,貌似还真是这个样子,长见识了,特致感谢。

PS: 其实我觉得图片尺寸的控制也不该由 Markdown 来管,那样式的事情
CupTools
2016-02-04 16:42:15 +08:00
zxgngl
2016-02-04 16:43:23 +08:00
@xuboying 我没有想着要“标新立异”,心中只有“简单实用”。关于一些“微创新”,请看一下 66 楼回复。
laosb
2016-02-04 16:44:04 +08:00
有实意字符的进入,必然导致阅读困难。对于专业文字工作者而非程序员来说,这个问题尤其明显。 Markdown 之所以能取得很多文字工作者的认同,显然是基于这种朴实的语法。这种标记语法接近于你在没有解析器情况下需要达到一些效果时所采取的写法,这是最大的优势。
zxgngl
2016-02-04 16:44:50 +08:00
@CupTools 不是的,我是想解决问题,顺便可能需要造轮子。
zxgngl
2016-02-04 16:49:30 +08:00
@StarBrilliant

> 这个世界上是先有“ Markdown ”,后有 HTML 的。
> 这个世界上是先有“ Markdown ”,后有 HTML 的。
> 这个世界上是先有“ Markdown ”,后有 HTML 的。

> 重要的事情说三遍。

不,可能是你搞错了, HTML 诞生于 1993 年, Markdown 诞生于 2004 年。先有 HTML ,再有 Markdown 。

https://en.wikipedia.org/wiki/HTML
https://en.wikipedia.org/wiki/Markdown
zxgngl
2016-02-04 17:08:27 +08:00
@laosb

> 有实意字符的进入,必然导致阅读困难。对于专业文字工作者而非程序员来说,这个问题尤其明显。 Markdown 之所以能取得很多文字工作者的认同,显然是基于这种朴实的语法。这种标记语法接近于你在没有解析器情况下需要达到一些效果时所采取的写法,这是最大的优势。

其实,我设计的语法是可以兼容 Markdown 的朴实语法的。对于文字工作者来说,如果能够接受:

### H3
*asterisks*
_underscores_
~~Scratch this.~~
[I'm an inline-style link]( https://www.google.com)

table | in | markdown
--- | --- | ---
a | b | c
1 | 2 | 3

那么应该也能够接受(如果不是更容易):

(### . H3)
(* . asterisks)
(_ . underscores)
(~~ . Scratch this.)
(span link=|https://www.google.com| . I'm an inline-style link)

(table plugin=|csv-paser| .
csv, based, table
a, b, c
1, 2, 3
)
zxgngl
2016-02-04 17:14:59 +08:00
@StarBrilliant

> LZ 肯定不是 Python 用户

我用 Python 写过一套完整的高性能私有二进制协议的编码器和解码器。
SilentDepth
2016-02-04 17:18:24 +08:00
@zxgngl 你没理解 @StarBrilliant 的意思,注意「 Markdown 」是加了引号的,他说的是类似 Markdown 的书写方式,而不是 Markdown 语言本身
zxgngl
2016-02-04 17:21:29 +08:00
@StarBrilliant

> UBB 的 [b]加粗[/b] 只能解释成 [b]加粗[/b],不能解析成任何别的具有强调意义的形式。

“ b ”被解释成什么是解释器的事情,在解释器的层面是可以改变“ b ”的语义的, b 和*,-,### 一样只是符号。是解释器赋予了符号意义。

在我设计的语言中,标签的意义并不一定是写死的,我觉得可以通过配置文件进行扩展……

(ThisTagCanMeanAnythingYouWant . I mean, anything.)
zxgngl
2016-02-04 17:28:04 +08:00
@SilentDepth

> 你没理解 @StarBrilliant 的意思,注意「 Markdown 」是加了引号的,他说的是类似 Markdown 的书写方式,而不是 Markdown 语言本身

是的,你说得对,我理解错了,现在明白了。谢谢提醒;)
SilentDepth
2016-02-04 17:31:27 +08:00
@zxgngl : 「在我设计的语言中,标签的意义并不一定是写死的,我觉得可以通过配置文件进行扩展」

这就容易出现「不结合解释器就无法看懂源文件」的问题。说白了,这是一个编程语言,已然超出了 Markdown 所在的领域。(让我想起了操作符重载)
zxgngl
2016-02-04 17:41:47 +08:00
其实吧,我知道,自己设计个东西取悦自己,带自己带来便利就值了。自己工作中完全替代掉 Markdown 等各式,并因此变得更开心,也就基本上是极限了。至于推广啦、甚至广泛地代替 Markdown ,就几乎不可能了,至少我是悲观的。因为 Markdown 历史包袱太大了,好多基础设施如 GitHub 和 StackOverflow 都采用了它,这东西是很难变的。要说我是不是真的致力于推广新语法,让每个人都用上,其实不是的,也做不来。社区嘛,交流嘛、集思广益交朋友嘛~ 但我是真觉得这个新语法是比 Markdown 好的,所以才分享出来。虽然我知道由于一些认知偏见(中性词),比如把“陌生”等同于“复杂”,把“熟悉”等同于“好”,这个语法一开始会不招人喜欢。但是有什么办法呢?不折腾一下怎么好玩~
SilentDepth
2016-02-04 17:51:56 +08:00
@zxgngl : 「其实吧,我知道,自己设计个东西取悦自己,带自己带来便利就值了。自己工作中完全替代掉 Markdown 等各式,并因此变得更开心,也就基本上是极限了。至于推广啦、甚至广泛地代替 Markdown ,就几乎不可能了,至少我是悲观的。因为 Markdown 历史包袱太大了,好多基础设施如 GitHub 和 StackOverflow 都采用了它,这东西是很难变的。要说我是不是真的致力于推广新语法,让每个人都用上,其实不是的,也做不来。社区嘛,交流嘛、集思广益交朋友嘛~ 但我是真觉得这个新语法是比 Markdown 好的,所以才分享出来。虽然我知道由于一些认知偏见(中性词),比如把“陌生”等同于“复杂”,把“熟悉”等同于“好”,这个语法一开始会不招人喜欢。但是有什么办法呢?不折腾一下怎么好玩~」

这么说就让人伤心了。就事论事来说,主题帖里提出的方案相比 HTML/XML 没有明确而足够的优势,所以才会引来所谓的「偏见」。

自己设计个语言自娱自乐当然不是问题,只是既然发到 V2EX 上来了,我们(不要脸地代表一下其他人)不过是根据自己的见识提出些想法和建议。站在程序员的角度来讲,能提高做一件事的效率有何不可呢?至于推广什么的是后话了。

如果楼主要继续发展这个语言,个人完全赞成,万一走出了个全然不同的世界呢?:)
vvsun
2016-02-04 17:57:06 +08:00
支持 po 主的动手能力,我还是先用 Typora 比较 High
Delbert
2016-02-04 18:02:06 +08:00
@EugeneQiu 括号不是 Shift 键么?
zxgngl
2016-02-04 18:04:14 +08:00
@SilentDepth 别伤心,我做。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255287

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX