我遵循了this教程,该教程描述了如何为ANTLR4语法(ECMAScript.g4)创建JavaScript编译器。作为示例,它还描述了如何将某些内容从JavaScript转换为Python。 This is the link到我的项目的仓库中。
但是,当我通过命令提示符运行程序时,出现以下错误:
D:\js-runtime>npm start
> js-runtime@1.0.0 start D:\js-runtime
> node index.js
D:\js-runtime\codegeneration\PythonGenerator.js:123
const path = require('path');
^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (D:\js-runtime\index.js:4:25)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! js-runtime@1.0.0 start: `node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the js-runtime@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\shjslk\AppData\Roaming\npm-cache\_logs\2018-10-31T08_28_59_802Z-debug.log
以下是PythonGenerator.js的相关部分:
const ECMAScriptVisitor = require('../lib/ECMAScriptVisitor').ECMAScriptVisitor;
/**
* This Visitor walks the tree generated by parsers and produces Python code
*
* @returns {object}
*/
class Visitor extends ECMAScriptVisitor {
// lots of method definitions here
const path = require('path');
const {
SemanticArgumentCountMismatchError
} = require(path.resolve('error', 'helper'));
// more methods
}
module.exports = Visitor;
很明显,该错误必须与“路径”节点模块有关。但是我看不出这是怎么回事。可能是什么原因造成的?
答案 0 :(得分:0)
我通过注释声明并使用PythonGenerator.js文件中的路径Node模块的语句来解决此问题。
但是,我不知道为什么会这样。如果有人知道有效的原因,请将其添加为答案,我将接受它作为该问题的答案
答案 1 :(得分:0)
您不能在JavaScript的类定义主体中放入常量或变量定义。您应该在path
类的定义之外定义SemanticArgumentCountMismatchError
和Visitor
。