首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS特定语言语法检查器

NodeJS特定语言语法检查器
EN

Stack Overflow用户
提问于 2017-04-23 07:45:04
回答 1查看 578关注 0票数 1

最近我发现了一个名为语法检查器(https://www.npmjs.com/package/syntax-checker)的npm包。

我想把它集成到js脚本中。我正在使用一个不和谐的聊天机器人,它检查消息的代码块和编码语言。正如语法检查器的描述所述,它支持Ruby、PHP、Perl、Lua、C/CPP、Bash、Javascript和Python。我该怎么把这个融入机器人呢?我现在使用js来检查这个脚本。

代码语言:javascript
复制
  if (message.content.includes("```js"))
  {

    let code = message.content.substring('```js '.length);
    var codebegin = code.split("```js").pop();

    var n = codebegin.indexOf('```');
    var codeend = codebegin.substring(0, n != -1 ? n : codebegin.length);

    var check = require('syntax-error');

    var err = check(codeend);

    if (err)
    {

      message.reply("Your code contains errors! ```" + err + "```");
    }
    else
    {
message.reply("No Errors!");
    }

  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-23 11:13:53

语法检查器的工作方式是在您的计算机上运行用于编译代码的程序(没有输出),并检查是否有错误。它通过分析传递给它的目录中的每个文件来运行,然后输出到一个文件中。您需要为每个请求创建一个临时文件,然后使用shell运行程序(查看child_process或exec )。

这个模块最终要做的就是从文件扩展名决定代码是哪种语言,并运行类似于exec('php -l file/path/here.php', callbackFunctionHere)的代码。这就是它所运行的PHP,其他的是ruby -cpython -m py_compileperl -cluac -pbash -ngcc -fsyntax_onlyuglifyjs -o /dev/null

有了这些知识,在文件系统上乱搞是没有意义的。只需使用类似于exec("echo '" + codeStr + "' | php -l', callbackFunctionHere);的东西。用您需要的任何链接替换php -l。确保您的escape any single quotes可能发生在codeStr中,否则将导致奇怪的错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43568646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档