杂食性程序猿:专注于 Android,web frontend,flutter,node.js 等大前端领域,也会玩玩 python 和 java 等后端技术 ...

2015年11月 的文章归档

共找到 2 篇文章

coffeescript 词法分析

无论是对我们的代码解释执行,还是编译执行,词法分析都是作为第一个环节开始的。
词法分析的过程,可以理解为将字符序列转换为单词(Token)序列的过程。
本文中以如下的coffeescript代码为示例:

# Assignment:
number = 42
opposite = true
# Conditions:
number = -42 if opposite
# Functions:
square = (x) -> x * x

这里的单词(Token)是指一系列最小的对程序来说有意义的单元,例如"number", "=", "(换行)", "(空格)"等等。
对于coffeescript而言,有10中类型的token
1. identifier(标识符):脚本中各种独立的标示符,例如number,opposite等等
2. comment(注释)
3. whitespace(空格)
4. line(换行)
5. heredoc(本地注释):以"""或者'''开头的代码注释
6. string(字符串):匹配的coffeescript中得字符串,例如'test'(coffeescript中得字符串用单引号围起来)
7. number(数字):匹配的数字,包括了8进制数字和16进制的数字
8. regex(正则表达式)
9. js(js):匹配的正则为/^[^\\](?:\.[^\`])*`/,我觉得我的解释太TM多余了,还是看代码来的直观
10. literal(加减乘除,位运算,与或之列的符号)
输入的是如上的一串coffeescript的代码,输出则是按照这是种token分类好的程序的最小单元的一个数组,提供给语法分析器继续进行分析。
例如:


Enjoy it !
转载请注明出处
botobe.net
本文Github链接

coffeescript 编译调试剖析

工欲善其事,必先利器。我们用node-inspector来调试coffeescript的编译。
用全局的方式安装node-inspector

sudo npm install node-inspector -g 

新建一个叫coffee得目录,用来作为我们的工作目录。
在目录中新建一个package.json文件,可将如下内容填入其中(截止目前为止我们用coffeescript最新的1.8版本进行调试)

{
  "name": "coffee-debugger",
  "version": "0.0.0",
  "private": true,
  "dependencies": {
    "coffee-script": "1.8.0"
  }
}

再命令行中运行如下命令安装当前工程依赖的coffeescript

sudo npm install 

在我们的工作目录中,新建一个用来测试的coffeescript脚本main.coffee
这个时候工程中的目录结构应该是这样

下边就可以正式的开始进入主题了,打一个命令行,启动node-inspector

node-inspector

再打开一个命令行,并且进入到coffee目录中

node --debug-brk node_modules/coffee-script/bin/coffee -c main.coffee

在浏览器中打开URL 127.0.0.1:8080/debug?port=5858 就可以开始调试coffeescript的编译过程了(-c开关表示将main.coffee编译成为main.js脚本)

Enjoy it !
转载请注明出处
botobe.net
本文Github链接