深入探究CoffeeScript编译器:元编程与语法定制
编译器的工作原理
CoffeeScript有着丰富的语法选项,这使得对所有代码进行标记化和构建抽象语法树(AST)成为一项复杂的任务。为了简化后续的编译步骤,编译器会对标记流进行重写。
隐式缩进
编译器会添加隐式缩进。例如,当内联编写函数时:
I = (x) -> x
标记流中会在函数体前添加 [INDENT] :
I = (x) ->[INDENT]x
需要注意的是,缩进并不一定需要换行符,尽管在实际编写中,缩进通常伴随着换行。
换行符处理
编译器会移除一些表达式开头和中间的换行符,但会保留表示表达式结束的重要换行符。例如:
a = 1
b = 2
经过处理后,重要的换行符会被保留。
括号和大括号处理
在大多数情况下,括号和大括号是可选的,但这可能会导致一些歧义。编译器通过重写来处理这些问题。例如:
I = (x) -> x
I 2
编译器会添加隐式的括号:
I (2)
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



