Python中的Javascript词法分析器/分词器?
有没有人知道有什么JavaScript的词法分析器或者分词器(最好是用Python写的)?
简单来说,我想从一个随便的JavaScript文件中提取出所有的词法单元。
比如说:
foo = 1
会变成类似这样的:
- 变量名 : "foo"
- 空格
- 运算符 : 等于
- 空格
- 整数 : 1
1 个回答
2
这个链接 http://code.google.com/p/pynarcissus/ 有一个工具。
我自己也做了一个,但它不支持自动插入分号,所以对于那些你无法控制的JavaScript代码来说,它几乎没什么用(因为几乎所有实际的JavaScript程序至少缺少一个分号) :) 这是我的工具:
http://bitbucket.org/santagada/jaspyon/src/tip/jaspyon/
语法规则在jsgrammar.txt文件里,它是通过PyPy的解析库来解析的(你需要下载并从PyPy源代码中解压出来),然后它会生成一个解析树,我在astbuilder.py中对这个树进行处理。
不过如果你没有许可方面的问题,我建议你使用pynarcissus。这里有一个直接的链接,可以查看代码(是从narcissus移植过来的):
http://code.google.com/p/pynarcissus/source/browse/trunk/jsparser.py