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

深圳找个做网站平台的/市场调研表模板

深圳找个做网站平台的,市场调研表模板,建站哪家好联系兴田德润,图片生成器软件本节书摘来自华章社区《ANTLR 4权威指南》一书中的第3章,第3.1节ANTLR工具、运行库以及自动生成的代码,作者[美] 特恩斯帕尔(Terence Parr),更多章节内容可以访问云栖社区“华章社区”公众号查…

本节书摘来自华章社区《ANTLR 4权威指南》一书中的第3章,第3.1节ANTLR工具、运行库以及自动生成的代码,作者[美] 特恩斯·帕尔(Terence Parr),更多章节内容可以访问云栖社区“华章社区”公众号查看

3.1 ANTLR工具、运行库以及自动生成的代码
在开始前,我们先浏览一下ANTLR的jar包中的内容。在ANTLR的jar包中存在两个关键部分:ANTLR工具和ANTLR运行库(运行时语法分析)API。通常,当说到“对一个语法运行ANTLR”时,我们指的是运行ANTLR工具,即org.antlr.v4.Tool类来生成一些代码(语法分析器和词法分析器),它们能够识别使用这份语法代表的语言所写成的语句。词法分析器将输入的字符流分解为词法符号序列,然后将它们传递给能够进行语法检查的语法分析器。运行库是一个由若干类和方法组成的库,这些类和方法是自动生成的代码(如Parser,Lexer和Token)运行所必须的。因此,我们完成工作的一般步骤是:首先我们对一个语法运行ANTLR,然后将生成的代码与jar包中的运行库一起编译,最后将编译好的代码和运行库放在一起运行。
构建一个语言类应用程序的第一步是创建一个能够描述这种语言的语法(即合法语句结构的集合)的语法。我们将在第5章中介绍如何编写语法,现在我们先来看下面这个能够满足我们需求的语法。


03c7a3f80ac1bcc83b695ffffc000ad4f79788be

请将语法文件ArrayInit.g4放入一个单独的文件夹,例如/tmp/array(通过复制-粘贴或者从本书网站下载)。然后我们对它运行ANTLR工具。


70030d0796f5952a912717ed31be1a4ad2f5bdd5

3)ArrayInit.tokens:ANTLR会给每个我们定义的词法符号指定一个数字形式的类型,然后将它们的对应关系存储于该文件中。有时,我们需要将一个大型语法切分为多个更小的语法,在这种情况下,这个文件就非常有用了。通过它,ANTLR可以在多个小型语法间同步全部的词法符号类型。更多内容请参阅4.1节中的“语法导入”部分。
4)ArrayInitListener.java, ArrayInitBaseListener.java:默认情况下,ANTLR生成的语法分析器能将输入文本转换为一棵语法分析树。在遍历语法分析树时,遍历器能够触发一系列“事件”(回调),并通知我们提供的监听器对象。ArrayInitListener接口给出了这些回调方法的定义,我们可以实现它来完成自定义的功能。ArrayInitBaseListener是该接口的默认实现类,为其中的每个方法提供了一个空实现。ArrayInitBaseListener类使得我们只需要覆盖那些我们感兴趣的回调方法(详见7.2节)。通过指定-visitor命令行参数,ANTLR也可以为我们生成语法分析树的访问器(参阅7.5节“使用访问器遍历语法分析树”部分)。
接下来,我们将使用监听器来将short数组初始化语句转换为字符串对象,不过在这之前,我们首先使用一些样例输入来验证我们的语法分析器是否能正常进行匹配工作。
ANTLR语法比正则表达式功能更强大
熟悉正则表达式的读者可能会产生疑问,使用ANTLR来解决这么简单的识别问题是不是有点小题大做了?实际上,由于嵌套的花括号结构的存在,正则表达式无法识别这样的初始化语句。正则表达式没有存储的概念,它们无法记住之前匹配过的输入。因此,它们不能将左右花括号正确配对。我们将在5.3节“嵌套模式”部分中予以详细讨论。

http://www.lbrq.cn/news/1546759.html

相关文章:

  • 邢台网站设计哪家专业/网站建设与管理就业前景
  • 学校建设网站/steam交易链接可以随便给别人吗
  • 登录自治区建设厅的网站查询/宁波网络推广seo软件
  • 北京网站建设学校/网站怎么提升关键词排名
  • 网站建设有哪些公司/sem技术培训
  • 合肥网站备案/百度推广官方电话
  • 网站后台显示不了/网络推广外包流程
  • 怎么做网站统计/厦门人才网官网招聘
  • 省政府网站建设/企业培训平台
  • 做百度推广送的网站/种子资源
  • 松原市住房和城乡建设局网站/太原关键词优化公司
  • 公司做网站计入什么科目/360搜索首页网址是多少
  • 永州网站建设开发/app推广工作靠谱吗
  • 淘宝客网站静态还是动态好/云客网平台
  • 网站备案免费的吗/seo的课谁讲的好
  • 专业医疗网站建设/巨量引擎广告投放平台代理
  • 工业外观设计/seo有哪些优缺点?
  • wordpress整站密码访问/网站seo推广公司靠谱吗
  • 龙华做网站的/自助建站工具
  • 简单网站建设/怎样做网站推广
  • 手机网站赏析/广州企业网站建设
  • 那些网站是做俄罗斯鞋子/手机怎么做网站
  • 深圳罗湖做网站58/天津seo实战培训
  • 长沙官网网站建设哪家好/什么优化
  • 上海优秀网站建设公司/新网域名查询
  • 如何建设一家网站/百度新闻头条新闻
  • 搭建网站开发网站环境/新手怎么做网络推广
  • 设计感网站有哪些方面/做竞价推广这个工作怎么样
  • 租房网站建设/怎么把产品快速宣传并推广
  • 网站与网页区别/曼联vs曼联直播
  • 信创产业:从技术突围到生态重构的强国之路
  • 25. 能否创建一个包含可变对象的不可变对象
  • HTTPS 配置与动态 Web 内容部署指南
  • 快速掌握Hardhat与Solidity智能合约开发
  • Jenkins安装部署(Win11)和常见配置镜像加速
  • Docker部署 Neo4j Community【拒绝国内镜像拉取异常】