2016-04-10 27 views
1

Node.js Version:Node.js Syntaxerror: Unerwarteter Bezeichner 'boolean' in ANTLR4 JavaScript Lexer

[email protected]:~/test/antlr4-js$ node --version 
v5.10.1 

Java-Version:

[email protected]:~/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 Version:

[email protected]:~/test/antlr4-js$ java -jar ./antlr-4.5.3-complete.jar | head -n 1 
ANTLR Parser Generator Version 4.5.3 

Meine Testskript:

[email protected]:~/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 

Der Fehler tritt in der letzten Zeile node antlr4/run.js wo Node.js run.js läuft:

[email protected]:~/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) 

So ANTLR4 scheint eine „starke getippt“ JavaScript und Node.js Drosseln auf sie zu haben, erzeugt. Wie kann ich dieses Problem beheben?

Hinweis: Wenn Sie Node.js und Java installiert haben Sie so wiedergeben können:

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

Antwort

1

Das Problem war, weil die ECMAScript.g4 Grammatik, die ich entworfen wurde in Java für den Einsatz wurde mit nicht JavaScript . Ich habe eine neue Datei zur Unterstützung von JavaScript erstellt. Sie können die Details here erhalten.