介绍下我的 Cirru 项目, 一套基于缩进的语法
发布于 10个月前 作者 jiyinyiyong 718 次浏览

Cirru 是我的个人项目, 定义了一套基于缩进的语法, 然后这个语法很容易解析到语法树, 就可以用来玩和做一些比较有趣的事情, 但是我发现最有用的功能是用 Cirru 来替代 HTML 语法生成 HTML

比如这样一段 HTML, 不考虑缩进的话:

<meta charset="utf-8">
<div class="demo-a demo-b" data="root node">demo of text
  <span>nothing</span>plain text</div>
<div id="entry" class="c demo"></div>
<div class="demo"></div>
<div id="demo">content</div>
<div class="class-a"></div>

我可以在 Cirru 的语法上加上一些特殊符号, 写成这样:

meta (:charset utf-8)
div (:class demo-a demo-b)
  = demo of text
  :data root node
  span $ = nothing
  = plain text
#entry.demo (:class c)
div.demo
div#demo $ = content
.class-a

主页刚刚更新 http://cirru.org/ GitHub 主页是 https://github.com/cirru 一个 Twitter 帐号 https://twitter.com/cirrulang

页面上都是抓子项目 README 生成的文档, 都是英文的… 相关的项目有下面这些… 都是很小的项目, 但是数量看起来, 呵呵:

  • Parser
    • Cirru Parser in CoffeeScript
    • Cirru Parser in Go
  • Evaluater
    • Evaluater in Go
    • Evaluater in CoffeeScript
    • Cirru Shell
    • Cirru Table: concept of debugging
  • Converter
    • Convert JSON to Cirru
    • Convert Cirru to Mustache
    • HTML templating in Cirru
    • Write JavaScrip AST with Cirru
  • Editor Support
    • Sublime Text Package
    • Cirru Editor
    • Brackets Package
    • CodeMorror support
    • Ace Editor support
    • Atom Editor support
  • Highlighting
    • Rainbow Plugin
    • Highlight.js fork with Cirru syntax
    • Pygments fork with Cirru syntax
    • Custom-made Syntax Highlighting
14 回复

又一个jade么?性能呢

我的功能少了一个数量级, 所以还没想过去测试性能… 要不给的 case 我用 Cirru HTML 写对应的看看?

是有多不想直接写HTML啊。。。

说到关键了, 但还可以再深入一点, 我造这个语法的原因, 花括号和尖括号这类语法, 一来干扰视线, 二来干扰思考代码的流程, 不能忍

生成html的话让我想起了jade

高大上的东西, 这个不好搞呀, 加油

看起来比较酷, 不过不前搞的没涉及深层的知识, 暂时还可以

看来有很多人不喜欢括号啊,甚至都有点极端了,

嗯, 做出来可以不用, 但是应该有人去做.

@jiyinyiyong 你那么不喜欢括号啊,原生的不是挺好的吗!

@xiuxu123 不好. 看看 Jade 仓库 Star 的数量就知道不是少数人不喜欢 HTML 的语法 https://github.com/visionmedia/jade/

@jiyinyiyong 你不能这样理解啊,看star数量就觉得人多啊,全球那么多开发者,点star毕竟还是只有那么一部分的,还有很多没有点的呢。我这里没有别的意思,就是觉得你太执着了。

@xiuxu123 嗯, 大部分的人是不能像我这样的, 我觉得总得有那么一个两个去探索. 6k+ 不是小的数量了. GitHub 上能到这程度的项目没有多少个.

回到顶部