javascript - Node.js 语法错误 : Unexpected identifier 'boolean' in ANTLR4 JavaScript Lexer

标签 javascript node.js antlr4 lexical-analysis strong-typing

Node.js 版本:

jj5@orac:~/test/antlr4-js$ node --version
v5.10.1

Java版本:

jj5@orac:~/test/antlr4-js$ java -version
java version "1.7.0_91"
OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

ANTLR4版本:

jj5@orac:~/test/antlr4-js$ java -jar ./antlr-4.5.3-complete.jar | head -n 1
ANTLR Parser Generator  Version 4.5.3

我的测试脚本:

jj5@orac:~/test/antlr4-js$ cat run.sh 
#!/bin/bash
cd "`dirname $0`"
rm ECMAScript????* 2>/dev/null
export CLASSPATH=".:`pwd`/antlr-4.5.3-complete.jar"
java -jar ./antlr-4.5.3-complete.jar -Dlanguage=JavaScript -visitor ECMAScript.g4
node antlr4/run.js

错误发生在 Node.js 运行的最后一行 node antlr4/run.js run.js :

jj5@orac:~/test/antlr4-js$ ./run.sh
[irrelevant warnings elided]
/home/jj5/repo/svn/pcrepo/jj5-test/antlr4-js/ECMAScriptLexer.js:881
    private boolean strictMode = true;
            ^^^^^^^

SyntaxError: Unexpected identifier
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (/home/jj5/repo/svn/pcrepo/jj5-test/antlr4-js/antlr4/run.js:2:1)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)

所以 ANTLR4 似乎生成了一些“强类型”的 JavaScript 和 Node.js。我该如何解决这个问题..?

注意:如果您安装了 Node.js 和 Java,您可以像这样重现:

cd /tmp
svn co https://www.progclub.org/svn/pcrepo/jj5-test/trunk/antlr4-js/
antlr4-js/run.sh

最佳答案

问题是因为我使用的 ECMAScript.g4 语法是为 Java 而不是 JavaScript 设计的。我创建了一个新文件来支持JavaScript,您可以获取详细信息here .

关于javascript - Node.js 语法错误 : Unexpected identifier 'boolean' in ANTLR4 JavaScript Lexer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36525936/

相关文章:

javascript - 使用 JavaScript(仅 - 无库)将另一个页面加载到 div

javascript - 如何从 addEventListener 返回值

javascript - constructor.name 上 ngSwitch 的替代方案?

javascript - JS中如何抽象出一个函数作为参数?

java - Antlr4 - 子句的排序

java - 如何将 ANTLR 4 生成的 AST 翻译成它的源代码

java - antlr4 中的 <EOF> 不匹配

javascript - 将当前节点包含在查找范围内

javascript - 如何流式传输数据以提供进度条

node.js - 向 Express 中的所有路由添加尾部斜杠