当前位置: 首页 > news >正文

吉林省网站建设_网站建设公司_API接口_seo优化

娄底做网站,php制作招聘网站,购门户网站系统,免费的crm的appantlr4例子网络上的ANTLR#xff1a;为什么#xff1f; 我开始在MS-DOS上编写我的第一个程序。 因此#xff0c;我非常习惯在自己的机器上安装工具。 但是在2016年#xff0c;网络无处不在#xff0c;因此那里也可能需要我们的语言。 可能的情况#xff1a; ANTLR 也在… antlr4例子 网络上的ANTLR为什么 我开始在MS-DOS上编写我的第一个程序。 因此我非常习惯在自己的机器上安装工具。 但是在2016年网络无处不在因此那里也可能需要我们的语言。 可能的情况 ANTLR 也在网络上 用户可能还希望从网络访问DSL编写的文件并可能对其进行较小的更改同时继续使用胖客户端执行复杂的任务。 ANTLR 仅在网络上 您正在与不愿安装IDE的领域专家打交道因此他们更喜欢使用一些Web应用程序编写DSL程序。 在第一种情况下您可以使用Java目标和 Javascript目标来生成ANTLR解析器而在第二种情况下您可以仅以JavaScript为目标 一个简单的例子待办事项清单 在此示例中我们将使用的DSL非常简单它将表示一个待办事项列表其中每个待办事项都包含在单独的行中并以星号开头。 有效输入的示例 * do this * do that* do something else after an empty line 这是我们的语法 grammar todo;elements: (element|emptyLine)* EOF;element: * ( | \t )* CONTENT NL;emptyLine: NL;NL: \r | \n ;CONTENT: [a-zA-Z0-9_][a-zA-Z0-9_ \t]*;使用ANTLR Javascript目标 您将需要安装ANTLR工具才能为我们的解析器生成Javascript代码。 您可以使用简单的Gradle脚本来代替手动下载ANTLR及其依赖项。 更新所使用的ANTLR版本也非常简单。 apply plugin: javarepositories {jcenter() }dependencies {runtime org.antlr:antlr4:4.5.2 }task generateParser(type:JavaExec) {main org.antlr.v4.Toolclasspath sourceSets.main.runtimeClasspathargs [-DlanguageJavaScript, todo.g4, -o, static/generated-parser] } 您现在可以通过运行以下命令生成解析器 gradle generateParser 好的这很简单。 调用解析器 不幸的是仅打开本地文件时我们使用的JS库无法正常工作这意味着对于我们的小示例我们也需要使用HTTP。 我们的Web服务器只需要提供大量静态文件即可。 为此我选择在flask中编写一个超级简单的应用程序。 提供静态文件的替代方案有数百万种因此请选择您喜欢的一种。 我不会在此处详细说明如何通过flask提供静态文件但是GitHub上提供了代码如果您对此有疑问可以在此帖子中添加评论以告知我。 我们的静态文件将包括 通过运行gradle generateParser得到的生成的解析器 Antlr4 JS运行时 JS库require.js HTML和CSS 您可以从此处获取Antlr4 JS运行时。 为了避免必须手动导入数十个文件我们将使用require.js。 您可以从此处获取我们需要的口味或require.js。 我们将添加一个文本区域和一个按钮。 当用户单击按钮时我们将解析文本区域的内容。 简单吧 这是此设计杰作HTML代码 div idinputs textarea idcode * play with antlr4 * write a tutorial /textarea br/ button idparseParse/button /div 首先导入require.js script typetext/javascript srclib/require.js/script 顺便说一句我们没有使用jQuery我知道这可能令人震惊。 好现在我们必须调用解析器 script typetext/javascript var antlr4 require(antlr4/index); var TodoLexer require(generated-parser/todoLexer); var TodoParser require(generated-parser/todoParser); document.getElementById(parse).addEventListener(click, function(){var input document.getElementById(code).value;var chars new antlr4.InputStream(input);var lexer new TodoLexer.todoLexer(chars);var tokens new antlr4.CommonTokenStream(lexer);var parser new TodoParser.todoParser(tokens);parser.buildParseTrees true;var tree parser.elements();console.log(Parsed: tree); }); /script 太好了现在我们的代码已解析但是我们不对其执行任何操作。 当然我们可以在浏览器中启动开发者控制台并打印有关树的一些信息以验证树是否正常工作并熟悉ANTLR返回的树的结构。 显示结果 如果我们正在构建某种TODO应用程序我们可能希望以某种方式表示用户通过DSL插入的信息。 让我们得到这样的东西 为此我们基本上需要添加功能updateTree来导航ANTLR返回的树并构建一些DOM节点来表示其内容 script typetext/javascript var updateTree function(tree, ruleNames) {var container document.getElementById(tree);while (container.hasChildNodes()) {container.removeChild(container.lastChild);}for (var i 0; i tree.children.length; i) {var child tree.children[i];var nodeType ruleNames[child.ruleIndex];if (nodeType element) {var newElement document.createElement(div);newElement.className todoElement;var newElementText document.createTextNode(child.children[2].getText());newElement.appendChild(newElementText);container.appendChild(newElement);}} };var antlr4 require(antlr4/index); var TodoLexer require(generated-parser/todoLexer); var TodoParser require(generated-parser/todoParser); document.getElementById(parse).addEventListener(click, function(){var input document.getElementById(code).value;var chars new antlr4.InputStream(input);var lexer new TodoLexer.todoLexer(chars);var tokens new antlr4.CommonTokenStream(lexer);var parser new TodoParser.todoParser(tokens);parser.buildParseTrees true;var tree parser.elements();console.log(Parsed: tree);updateTree(tree, parser.ruleNames); }); /script 干得好 码 如果这不是您第一次阅读此博客您可能会怀疑某些代码即将到来。 和往常一样代码在GitHub上 https //github.com/ftomassetti/antlr-web-example 下一步 下一步是执行错误处理我们要捕获错误并将其指向用户。 然后我们可能希望通过使用ACE来添加语法突出显示。 这似乎是一个很好的起点 https://github.com/antlr/antlr4/blob/master/doc/ace-javascript-target.md 我真的认为简单的文本DSL可以帮助使多个应用程序更加强大。 但是在网络上创建良好的编辑体验并非易事。 我想花更多时间玩这个。 翻译自: https://www.javacodegeeks.com/2016/05/antlr-web-simple-example.htmlantlr4例子
http://www.ihoyoo.com/news/33222.html

相关文章:

  • 中国建设人才信息网站官网社交媒体 网站
  • 中国最大的中文网站汽车之家官网入口
  • 雄安网站建设软件开发者大会
  • 菜谱分享网站开发开题报告徐州智能建站怎么做
  • 网站跟换域名你好多莉 wordpress
  • 公司主营网站开发怎么做账做美团一样的网站需要多少钱
  • 网站301跳转怎么做的wordpress的cute主题破解版
  • 建设企业网站中国建设银行k2 wordpress
  • 郑州港区建设投资公司网站兰州正规的装修公司
  • 云存储能用来做网站吗长春是几线城市2020
  • 移动app与网站建设的区别wordpress 根分类
  • 鄂尔多斯网站推广个人网站注册步骤图解
  • 我想做一个网站怎么创建免费的网站
  • 网站安全架构手机网站开发步骤
  • 电商网站产品模块做仿牌网站被封
  • 职业技术学院网站建设项目企业管理咨询报告案例
  • 哈尔滨网站备案手续费梵高网站建设
  • 工业设计网站象贵阳网站建设服务公司
  • 网站建设教学设计上传网站需要什么软件
  • 国外网站打不开怎么解决中华艺术宫室内设计
  • 苏州市建设局老网站wordpress erp
  • 申晨推荐的营销网站学编程的app
  • 网站开发需要哪些人怎么分工深圳大型网站建设服务
  • 备案网站域名查询网站权重收录
  • 网站建设辶首选金手指十五网站搭建要多少钱
  • 网站主机类型哪些网站建设公司
  • 企业网站建设怎么样做会计分录网站开发维护前景
  • 合肥建行网站网站建设服务公司有用吗
  • 东莞住房和城乡建设厅网站2345网址导航设置
  • 长沙网站制作公司东莞智通人才网招聘信息