问题标签 [esprima]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6989 浏览

javascript - 找不到模块“esprima”

我正在尝试用 JavaScript 开发一个抽象语法树程序。我正在使用 Jet brains IDE 进行开发。当我运行程序时,我收到错误Cannot find module esprima。nodejs 的设置是完美的,我认为它没有任何问题。请在下面找到代码片段。在一篇文章中,我看到 esprima 模块存在于 nodejs 中。请帮忙。谢谢你。

0 投票
0 回答
225 浏览

javascript - 使用 Esprima 的 JavaScript 中哪些字符可以成为运算符?

0 投票
1 回答
9366 浏览

javascript - ES6 模块导出默认语法

我正在使用带有esnext: true选项的 es6-module-transpiler、esprima 和 JSHint。JSHint 在我输入时抱怨:

但是当我使用 esprima 时会抱怨

规范说_

export default AssignmentExpression ;

这让我认为 JSHint 需要更新,而 esprima 正在正常轰炸,因为没有分配。有人可以在这里为我做决定吗?

0 投票
1 回答
486 浏览

javascript - 用 JavaScript (Esprima.JS) 开发一个解析器,以 Mozilla AST 格式解析 Haskell 语言

目前我正在开发一个解析 Haskell 语言的 JavaScript 解析器。我正在研究 Esprima.JS 并希望在它之上构建将解析 Haskell 语言。根据我的理解,我需要从一个基本部分开始,比如数字(它们在 Haskell 语言中的使用方式)运算符,然后是高级选项。我对它非常陌生,任何有关资源的帮助都对我有用

我正在遵循 Esprima.js 的这种模式

我应该遵循这个过程还是改进其他事情。如果我想在 Esprima.js 上构建(http://esprima.org/),流程是否相同。Esprima.js 比 acorn.js 更容易理解(虽然代码行更少,速度也更快)。我想将 Haskell 解析为 Mozilla AST 格式。任何帮助将不胜感激。

0 投票
1 回答
460 浏览

javascript - 来自外部文件、程序的 Javascript 对象

我对 JavaScript 的对象系统感到很困惑。我知道在 JavaScript 中一切都被视为对象,但在 Esprima 的这段代码中,我没有看到任何声明声明这个项目可以使用 esrpima 访问,如下行:( https://github.com/ariya/esprima/ blob/master/esprima.js

我的问题是如何以及在何处定义类似esprima.parse(text)Javascript 的内容,以便可以将其导出为外部包并使用对象名称进行访问。我知道如何定义像 Object = {a: "B"}; 这样的对象 但找不到解决办法。请帮我!

0 投票
1 回答
149 浏览

javascript - 如何检测分号是否用于终止由 Esprima 生成的 Mozilla Parser AST 中的表达式?

开发人员创建了一个非常简单的程序:

我想确保开发人员使用分号,因为我不相信所有开发人员都知道所有ASI规则。由于我将添加其他代码质量检查,因此我想使用Esprima生成要检查的代码的AST 。当使用Esprima 在线解析器解析上面的简单程序时(选中“基于行和列”选项),将创建以下结构

我应该如何检查是否使用了分号?我可以推断出一个可能没有在第二行使用,因为VariableDeclarationAST 中的第二个显示它结束于{line: 3, column: 0}如下所示。

第二个变量声明的位置在第 3 行结束

这是使用 Esprima 的其他工具的方式吗?检查\r\nvs\n行尾呢?Esprima 不适合这项任务吗?

编辑

与我分享这个问题的一位同事告诉我,我“可能需要解析树”,这样我就可以获得令牌列表。所以这解决了我的部分问题。以下是 Esprima 提供的代币:

现在我需要弄清楚如何将此标记列表与 AST 结合使用,以告诉我应该在第 2 行使用分号。

0 投票
0 回答
1339 浏览

javascript - 以编程方式在 JS 文件中插入一行

我想编写一个程序,在现有的 HTML 文件中向 JS 添加一行。我想我会使用 node.js,因为它是同一种语言。

我查看了许多项目,esprimaacornrocambolefalafelescodegen等,但我似乎找不到任何有关如何将节点添加到 AST 以创建新行的文档。我想知道解析工具是否是最好的选择——也许我会更好地使用字符串操作/正则表达式?我还想修改一些行以及添加新行。下面的代码是我目前必须在 javascript 中添加一行的非工作代码。

0 投票
0 回答
559 浏览

javascript - 重构 Javascript 对象和属性

我有一些代码我可能想多次重构。想象一下,像这样:

所以,我想要一个系统来生成某种数据结构,我可以在其中知道我有哪些命名空间/对象以及它们的方法,所以我可以决定是否要将“changeType”函数名称更改为“setNewType ",我知道仅仅替换原型的“changeType”属性是不够的,还需要 object1 调用该函数,因为它是一个 CustomObject。

所以,我一直在尝试不同的选择。

起初我尝试掌握:

http://graspjs.com/docs/equery/

但是我找不到检测元素范围的方法,我认为这是不可能的。

然后我想到使用 esprima 来创建我的代码的 AST,并可能从那里获取允许我识别对象范围的结构,但我也找不到这样做的方法。

http://esprima.org/

我想这一定是可能的,但也许我正在尝试错误的方式。我知道这也是一项艰巨的任务,所以我当然不是要求有人来解决这个问题,但是任何指向正确方向的提示都会非常有帮助。

谢谢。

0 投票
1 回答
1180 浏览

javascript - 在 Ubuntu 64 位上安装 js-yaml NPM 包依赖项时遇到问题

我正在尝试在 OSX 上编写自己的项目以在 Ubuntu 上构建。它使用几个 npm 包来构建自己。其中一些依赖于 npm 包 js-yaml,而后者又依赖于一个名为“esprima”的包。一个全新的 Ubuntu 14.04 安装给了我找不到这个包的错误:

module.js:340 抛出错误;^ 错误:在 Function.Module._load (module.js:280:25) 在 Module.require (module.js:364: 17) 在对象的 require (module.js:380:17) 处。(/home/michahell/Documents/projects/pinbored-webkit/node_modules/grunt/node_modules/js-yaml/lib/js-yaml/type/js/function.js:4:15) 在 Module._compile (module.js :456:26) 在 Object.Module._extensions..js (module.js:474:10) 在 Module.load (module.js:356:32) 在 Function.Module._load (module.js:312:12 ) 在 Module.require (module.js:364:17) npm ERR!奇怪的错误 8 npm WARN 这个失败可能是由于使用了旧的二进制“节点” npm WARN 有关进一步的解释,请阅读 /usr/share/doc/nodejs/README.Debian

输出告诉我它可能与遗留二进制节点有关,但我应该通过符号链接节点指向 nodejs 来解决这个问题,使用这个 SO 帖子: nodejs vs node on ubuntu 12.04

那么,是什么导致 npm / node 无法找到或安装这个包呢?

0 投票
2 回答
790 浏览

node.js - Getting "Error: Cannot find module 'esprima'" after updating Meteor to 1.0.2.1

After updating Meteor to version 1.0.2.1 I am getting an error:

This seems like a Node module error, but I know that Meteor uses its own bundled version of Node, so I don't understand why this module would be missing.

Could it be possible that one of my packages is causing this error? Here is the result of meteor list: