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

北京网站空间域名电脑网站生成手机网站

北京网站空间域名,电脑网站生成手机网站,网站优化工具,网站域名 空间 是每年都要缴费吗1. 意外的问题 在学习Antlr4的visitor模式时#xff0c;使用IDEA的Antlr插件完成了Hello.g4文件的编译#xff0c;指定的package为com.sunrise.hello 使用visitor模式遍历语法解析树#xff0c;遍历过程中打印hello语句 public class HelloVisitorImpl extends HelloBaseVi…1. 意外的问题 在学习Antlr4的visitor模式时使用IDEA的Antlr插件完成了Hello.g4文件的编译指定的package为com.sunrise.hello 使用visitor模式遍历语法解析树遍历过程中打印hello语句 public class HelloVisitorImpl extends HelloBaseVisitorString {Overridepublic String visitR(HelloParser.RContext ctx) {System.out.printf(hello %s\n, ctx.NAME().getText());return super.visitR(ctx);}// main方法使用visitor模式遍历语法解析树以打印hello语句public static void main(String[] args) {String input hello lucy\n hello wold\n by sunrise;// 词法解析CharStream stream CharStreams.fromString(input);HelloLexer lexer new HelloLexer(stream);CommonTokenStream tokens new CommonTokenStream(lexer);// 语法解析HelloParser parser new HelloParser(tokens);ParseTree parseTree parser.r();// 遍历语法解析树HelloVisitorImpl visitor new HelloVisitorImpl();visitor.visit(parseTree);} }运行main()方法执行报错 ANTLR Tool version 4.11.1 used for code generation does not match the current runtime version 4.8Exception in thread main java.lang.ExceptionInInitializerErrorat com.sunrise.hello.visitor.HelloVisitorImpl.main(HelloVisitorImpl.java:26) Caused by: java.lang.UnsupportedOperationException: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 4 (expected 3).at org.antlr.v4.runtime.atn.ATNDeserializer.deserialize(ATNDeserializer.java:187)at com.sunrise.hello.HelloLexer.clinit(HelloLexer.java:127)... 1 more Caused by: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 4 (expected 3).... 3 more分析异常栈的栈顶错误信息代码是由4.11.1版本的Antrl Tool生成的运行时的时候antlr runtime是4.8版本的二者不匹配 查看IDEA Antlr插件的描述以及maven中配置的antlr-runtime后发现确实如此 2. 错误原因分析 从错误提示大致可以猜出Antlr Tool版本与antlr runtime应该保持一致若不了解Antlr Tool和antlr runtime的分工则无法理解为何要保持一致。回看Antlr4的官网发现有如下介绍 complete jar里面包含Antlr Tool和Java runtimeJava runtime jar负责编译、执行Java语言的parser/lexer 总结起来Antlr Tool负责将.g4文件编译为指定语言的代码例如Java语言。Java语言的parser或lexer的编译、执行则需要依靠antlr runtime4.x版本的Antlr Tool生成的Java语言的parser和lexer需要使用4.x的org.antlr:antlr4-runtime 3. 解决办法 要么使用4.8版本的Antlr Tool重新编译.g4文件要么将org.antlr:antlr4-runtime的版本更新为4.11.1为了方便这里选择更新org.antlr:antlr4-runtime的版本 4. 更离奇的错误 现在使用4.11.1版本完成了.g4文件的编译、parser/lexer的Java代码编译 突发奇想使用grun命令测试语法规则报错如下 $ grun com.sunrise.hello.Hello r -gui ANTLR Tool version 4.11.1 used for code generation does not match the current runtime version 4.8ANTLR Runtime version 4.11.1 used for parser compilation does not match the current runtime version 4.8Exception in thread main java.lang.ExceptionInInitializerErrorat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at org.antlr.v4.gui.TestRig.process(TestRig.java:144)at org.antlr.v4.gui.TestRig.main(TestRig.java:119) Caused by: java.lang.UnsupportedOperationException: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 4 (expected 3).at org.antlr.v4.runtime.atn.ATNDeserializer.deserialize(ATNDeserializer.java:187)at com.sunrise.hello.HelloLexer.clinit(HelloLexer.java:127)... 6 more Caused by: java.io.InvalidClassException: org.antlr.v4.runtime.atn.ATN; Could not deserialize ATN with version 4 (expected 3).... 8 more又是版本不一致导致的 .g4文件的编译、parser的Java代码编译都是使用4.11.1版本但是却使用4.8的antlr runtime运行字节码 总结 .g4文件的编译、parser/lexer的代码编译、parser/lexer字节码的运行需要保持版本一致 这也是为什么开源组件喜欢使用maven plugin实现.g4文件的编译并使用maven property保证maven plugin和antlr-runtime的版本一致的原因
http://www.w-s-a.com/news/498145/

相关文章:

  • 建设银行门户网站惠州公司网站建设价格
  • 用python开发网站网站如何取消验证码
  • 公司做企业网站互联网建网站
  • 建网站需要的费用公司注册后怎么做网站
  • 宣传电脑的网站开发运动网站建设教程
  • 网站建设公司都会有哪些花销做网站公司商丘
  • 网站风格有哪些软件定制和开发
  • 公司网络维护具体做什么河南网站推广优化公司哪家好
  • 中学生制作的网站常平哪里有招计算机网站开发的
  • 原创网站模版苏州响应式网站建设
  • 做海报在哪个网站可以找素材网址申请注册方法
  • 网站建设分哪些类别别人做的网站不能用
  • 做网站网站会怎么样全国高校校园网站联盟建设
  • 整站下载器 做网站地图地产项目网站设计
  • 创意设计网站公司手机wap网站建设多少钱
  • 甘肃省第八建设集团公司网站seo高级优化方法
  • 精美的商城网站介绍最多人用的wordpress子主题
  • 检察门户网站建设情况俄外长抵达北京
  • 老电脑做网站服务器网站在线留言如何做
  • 南宁广告公司网站建设小程序源码破解
  • 沛县做网站xlec网站建设开发方式包括哪些方面
  • 山西网站建设 哪家好四川城乡和建设厅网站
  • 有瀑布流的网站小型商城网站
  • 百石网怎么做网站二次开发软件
  • 网站域名是什么东西制作网页哪家好
  • 合肥网站建设团队简述网站内容管理流程
  • 网站广告是内容营销吗wordpress增加背景图片
  • 网站建设技术jsp课程设计响应式布局网站开发
  • 东莞网站排名优化seo套路网站怎么做的
  • 我做网站网络建站一般多少钱