标签: esprima

如何在 DENO 中使用 npm 模块?

Deno 超级酷。我早上看到了,现在想迁移到 deno。我试图将我现有的 nodejs 脚本移动到 deno。任何人都可以帮助我了解如何在 deno.js 中使用 npm 模块。我需要 esprima 模块。这个有包https://github.com/denoland/deno_third_party/tree/master/node_modules但我不知道如何使用它。

javascript node.js npm esprima deno

79
推荐指数
2
解决办法
2万
查看次数

ES6模块导出默认语法

我正在使用es6-module-transpiler,esprima和JSHint以及esnext: true选项.当我提出时,JSHint抱怨:

export default = { some: 'thing', other: 'thing' };
Run Code Online (Sandbox Code Playgroud)

但是esprima在我使用时抱怨

export default { some: 'thing', other: 'thing' };
Run Code Online (Sandbox Code Playgroud)

规范

export default AssignmentExpression ;

这让我觉得JSHint需要更新和esprima正确地轰炸,因为没有任务.有人可以成为我的决定者吗?

javascript ecmascript-harmony jshint esprima

11
推荐指数
1
解决办法
9146
查看次数

如何识别以下代码模式

我有一个js承诺的模式,我想识别几个关键字

例如,如果我把代码放在:

var deferred = Q.defer();
Run Code Online (Sandbox Code Playgroud)

在文件中我还有以下各自的值

deferred.reject(err);
deferred.resolve();
return deferred.promise;
Run Code Online (Sandbox Code Playgroud)

完整的代码

例1

function writeError(errMessage) {
    var deferred = Q.defer();
    fs.writeFile("errors.log", errMessage, function (err) {
        if (err) {
            deferred.reject(err);
        } else {
            deferred.resolve();
        }
    });
    return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)

如果我把大型代码文件(作为字符串)发现此文件包含模式,我想要这样做

另一个例子

var d = Q.defer();/*或$ q.defer*/

在文件中,您还有以下各自的值

d.resolve(val);
d.reject(err); 
return d.promise;
Run Code Online (Sandbox Code Playgroud)

完成例2

function getStuffDone(param) {           
    var d = Q.defer(); /* or $q.defer */ 

    Promise(function(resolve, reject) {
        // or = new $.Deferred() etc.        
        myPromiseFn(param+1)                 
        .then(function(val) { /* or .done …
Run Code Online (Sandbox Code Playgroud)

javascript regex node.js promise esprima

11
推荐指数
2
解决办法
609
查看次数

如何将自定义 AST 转换为 JS 代码

我目前正在根据我设计的新语言规范生成自定义 AST。这个自定义 AST 包含我设计的不同节点,其中包含我现在生成 JavaScript 代码所需的所有信息。例如:

假设我有一个 customExpressionNode,我希望将其转换为包含几个 if 条件的 JavaScript 函数。

我目前正在研究像 Babylon 和 Esprima 这样的库,用于从我的自定义 AST 生成新的 Javascript AST,但据我所知,这些库使用的 AST 非常复杂。我还想避免将 js 代码打印到几个文件中然后解析和编译它们,所以我的问题是:

有没有更好的方式以编程方式生成符合 JavaScript 的 AST,我可以用它来生成 JavaScript 代码?

javascript code-generation abstract-syntax-tree esprima babel-babylon

7
推荐指数
1
解决办法
2837
查看次数

TypeScript-> AST-> TypeScript

有没有一种方法可以将TypeScript文件解析为AST,修改AST,然后将其解析为Esprima + Escodegen工具能够返回的TypeScript ?

重要的是,我不想先将TypeScript代码编译/转换为JavaScript。

abstract-syntax-tree typescript esprima

5
推荐指数
1
解决办法
2848
查看次数

无法解析错误:与伊斯坦布尔"导入"时出现意外的令牌

我正在使用伊斯坦布尔进行量角器测试的代码覆盖.

在检测源代码的过程中,我收到"无法解析,意外令牌"错误,并在完成错误后发现"导入"令牌正在创建问题.

一直在研究Angular2和Typescript.

我正在使用命令:istanbul instrument ./dir/to/instrument/ -o ./out/dir/

伊斯坦布尔默认使用esprima解析器在检测之前解析代码.这是一个解析错误,但我无法找到解决它的任何解决方案.

伊斯坦布尔:v0.4.5

Esprima解析器:v3.1.3

import instrumentation istanbul protractor esprima

5
推荐指数
1
解决办法
315
查看次数

为什么 escodegen 和 esprima 在我的源代码上生成括号包装器?

我用来escodegen在我的声明中添加结束代码,如下所示。在leave方法中,我.toArray()在语句末尾附加了一个调用。

const esprima = require('esprima');
const estraverse = require('estraverse');
const escodegen = require('escodegen');

const ast = esprima.parse('db.find()');
let finished = false;
estraverse.traverse(ast, {
  leave: (node, parent) => {
    if (node.type === esprima.Syntax.ExpressionStatement && !finished) {
      finished = true;
      let statement = escodegen.generate(node);
      statement = `${statement.substring(0, statement.lastIndexOf(';'))}.toArray()`;
      const findAst = esprima.parse(statement);
      node.arguments = findAst.body[0].expression.arguments;
      node.callee = findAst.body[0].expression.callee;
      node.type = findAst.body[0].expression.type;
    }
  },
});

const generated = escodegen.generate(ast);
console.log('generated  code:', generated);
Run Code Online (Sandbox Code Playgroud)

上述代码的输出是:generated code: (db.find().toArray())。我不明白为什么它在我的源代码上加上括号。我的源代码有什么问题吗?

javascript esprima escodegen

5
推荐指数
1
解决办法
649
查看次数

找不到模块'esprima'

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

var esp = require('esprima');
Run Code Online (Sandbox Code Playgroud)

javascript node.js esprima

3
推荐指数
1
解决办法
5970
查看次数