微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

antlr4 中的 javascript 语法

如何解决antlr4 中的 javascript 语法

我使用了以下 JavaScript 语法链接

https://github.com/ftomassetti/antlr-web-example

但是,当我使用 JavaScript 的语法(JavaScriptLexer.g4 和 JavaScriptParser.g4)而不是语法(todo.g4)时,它在定义时显示错误

ATNDeserializer.js:171 Uncaught AADB8D7E-AEEF-4415-AD2B-8204D6CF042E

enter image description here

这是什么错误

如何使用 antlr 和 JavaScript 语法创建中间代码

我的语法文件

  • JavaScriptLexer.g4
  • JavaScriptParser.g4

https://github.com/antlr/grammars-v4/tree/master/javascript/javascript

这是我的代码:index.html

<!DOCTYPE html>
<html>
<head>
    <title>ANTLR on the Web</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    <script type="text/javascript" src="lib/require.js"></script> 
</head>
<body>
<div id="inputs">
<textarea id="code">
* play with antlr4
* write a tutorial
</textarea>
<br/>
<button id="parse">Parse</button>
</div>
<script type="text/javascript">

var antlr4 = require('antlr4/index');
var JavaScriptParser = require('./generated-parser/JavaScriptParser');
console.log("start");
document.getElementById("parse").addEventListener("click",function(){
    // var JavaScriptLexer = require('generated-parser/JavaScriptLexer');
    // var input = document.getElementById("code").value;
    // var chars = new antlr4.InputStream(input);
    // var lexer = new JavaScriptLexer.JavaScriptLexer(chars);
    // var tokens  = new antlr4.CommonTokenStream(lexer);
    // var parser = new JavaScriptParser.JavaScriptParser(tokens);
    // parser.buildParseTrees = true;
    // var tree = parser.program();
    // console.log("Parsed: "+ tree);
    // updateTree(tree,parser.ruleNames);
});
</script>
<div id="tree">
</div> 
</body>
</html>

解决方法

@kaby76 基本上描述了这个问题。您正在使用旧的运行时。该错误显示了 "lexer action" feature 的 UUID。您用于生成解析器的 ANTLR4 工具比运行时更新。确保运行时与工具版本匹配(或更新)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。