Python中的Javascript词法分析器/分词器?

1 投票
1 回答
3324 浏览
提问于 2025-04-15 17:38

有没有人知道有什么JavaScript的词法分析器或者分词器(最好是用Python写的)?

简单来说,我想从一个随便的JavaScript文件中提取出所有的词法单元。

比如说:

foo = 1

会变成类似这样的:

  1. 变量名 : "foo"
  2. 空格
  3. 运算符 : 等于
  4. 空格
  5. 整数 : 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

撰写回答