2017-08-14 4 views
0

上のコンテキストのためにロードされていない私はhttps://tomassetti.me/antlr-and-the-web/を読んで作るが、エラーが発生した、その後、JavaScriptをantlr4使用するようにしてください。不明なエラー:モジュール名「antlr4 /インデックスは、」require.js

index.htmlを

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
    <script type="text/javascript" src="lib/require.js"></script> 
    <script type="text/javascript"> 
     var antlr4 = require('antlr4/index'); 
     var QueryLexer = require('gram/queryLexer'); 
     var QueryParser = require('gram/queryParser'); 
     document.getElementById("parse").addEventListener("click", function() { 
      var input = document.getElementById("code").value; 
      var chars = new antlr4.InputStream(input); 
      var lexer = new QueryLexer.queryLexer(chars); 
      var tokens = new antlr4.CommonTokenStream(lexer); 
      var parser = new QueryParser.queryParser(tokens); 
      parser.buildParseTrees = true; 
      var tree = parser.query(); 
      console.log("Parsed: "+ tree); 
     }); 
    </script> 
</head> 
<body> 
<div id="inputs"> 
<textarea id="code"> 
* play with antlr4 
* write a tutorial 
</textarea> 
    <br/> 
    <button id="parse">Parse</button> 
</div> 
</body> 
</html> 

エラーが上で発生することがあり、 "VARのantlr4 =( 'antlr4 /インデックス')を必要とします"。 http://www.antlr.org/download/index.htmlからantlr4をダウンロードし、同じ階層の「index.html」を入れました。 libディレクトリには "require.js"があります。

index.js

exports.atn = require('./atn/index'); 
exports.codepointat = require('./polyfills/codepointat'); 
exports.dfa = require('./dfa/index'); 
exports.fromcodepoint = require('./polyfills/fromcodepoint'); 
exports.tree = require('./tree/index'); 
exports.error = require('./error/index'); 
exports.Token = require('./Token').Token; 
exports.CharStreams = require('./CharStreams').CharStreams; 
exports.CommonToken = require('./Token').CommonToken; 
exports.InputStream = require('./InputStream').InputStream; 
exports.FileStream = require('./FileStream').FileStream; 
exports.CommonTokenStream = require('./CommonTokenStream').CommonTokenStream; 
exports.Lexer = require('./Lexer').Lexer; 
exports.Parser = require('./Parser').Parser; 
var pc = require('./PredictionContext'); 
exports.PredictionContextCache = pc.PredictionContextCache; 
exports.ParserRuleContext = require('./ParserRuleContext').ParserRuleContext; 
exports.Interval = require('./IntervalSet').Interval; 
exports.Utils = require('./Utils'); 

は、私はパス( 'antlr4 /インデックス')を必要とするため、間違っていない、問題がないと思います。 しかし、エラーが発生しました。どうか考えてください。

答えて

0

あなたの質問に表示されているコードは、RequireJSでそのままで動作することはできません。あなたは異なっrequire呼び出しを記述し、またはそうRequireJSが提供するCommonJS supportを使用するようdefineにあなたが持っているすべてのrequireの呼び出しをラップする必要があると思います。

しかし、このチュートリアルでは、RequireJSの使用を要求していません。チュートリアルのライターが提供したことをあなたがgithub repoに行けば、あなたはわかります

Require.js was obtained from https://github.com/letorbi/smoothie/blob/master/standalone/require.js

あなたはそのRequireJSないファイル、が、それはまたロードという意味では、それに似たものを使用する必要がありますRequireJSとは異なり、CommonJSモジュールフォーマットをそのままサポートするように見えるという意味でRequireJSとは異なりますが、RequireJSはそうではありません。

+0

おかげで:)私はhttps://github.com/letorbi/smoothie/blob/master/standalone/require.jsようrequire.jsを書き換え、それはよくやりました。 – tbt