antlr书写和编译的典型错误:
错误1:
2013-04-27 16:34:53,116 ERROR ql.Driver (SessionState.java:printError(401)) - FAILED: RewriteEmptyStreamException token valueList
org.antlr.runtime.tree.RewriteEmptyStreamException: token valueList
at org.antlr.runtime.tree.RewriteRuleElementStream._next(RewriteRuleElementStream.java:158)
at org.antlr.runtime.tree.RewriteRuleTokenStream.next(RewriteRuleTokenStream.java:57)
at org.apache.hadoop.hive.ql.parse.HiveParser.partitionValuesExper(HiveParser.java:17876)
at org.apache.hadoop.hive.ql.parse.HiveParser.partitionExper(HiveParser.java:17569)
at org.apache.hadoop.hive.ql.parse.HiveParser.partitionTemplate(HiveParser.java:17306)
at org.apache.hadoop.hive.ql.parse.HiveParser.tablePartition(HiveParser.java:16794)
at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:3783)
at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:1836)
at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:959)
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:644)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:439)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:416)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:335)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:893)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:412)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:755)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:613)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
解决方法:
本问题产生原因是赋值定义不对,产生错误的代码定义:
partitionValuesExper
@init { msgs.push(" partitionValuesExper specification"); }
@after { msgs.pop(); }
:KW_VALUES KW_LESS KW_THEN LPAREN value=stringOrNumOrFunc RPAREN
-> ^(TOK_VALUES_LESS $value )
|KW_VALUES KW_GREATER KW_THEN LPAREN value=stringOrNumOrFunc RPAREN
-> ^(TOK_VALUES_GREATER $value )
| KW_VALUES LPAREN valueList=(stringOrNumOrFuncList)
RPAREN
-> ^(TOK_VALUES $valueList )
错误出现在
KW_VALUES LPAREN valueList=(stringOrNumOrFuncList) RPAREN
去掉括号,改为:
valueList=stringOrNumOrFuncList
错误2:
”reference to rewrite element tableSubPartition without reference on left of ->“
通常这个错误的伴随Decision can match input such as "..." using multiple alternatives错误出现
解决方法:
错误的原因是不服和LL文法定义,特别是歧义的片段定义副本有如identity等变量定义,让状态机产生歧义,解决方法是将相同的部分提取出来,分层定义即可。
分享到:
相关推荐
ANTLR 是一个强大的、广泛使用的解析器生成器,用于构建语法...通过深入理解和使用ANTLR,开发者可以创建高效、可扩展的语言解析解决方案。在学习ANTLR的过程中,配合阅读原文和实践示例将有助于更好地掌握这一技术。
ANTLR( Anatomy of a Language Parser )是一个强大的解析...虽然这个版本相对较旧,但在某些场景下,它仍然能够提供高效且可靠的解决方案。如果你需要处理特定的结构化文本或二进制数据,ANTLR是一个值得考虑的工具。
总的来说,"antlr4-json-parser.zip"提供了一个使用ANTLR4工具构建的JSON解析器,它结合了ANTLR4的强大解析能力与Java语言的灵活性,参考了Jackson库的优秀实践,为JSON数据处理提供了一种高效、可扩展的解决方案。...
本文提出的解决方案是通过ANTLR实现了信号表达式的动态解析,即用户只需输入表达式,计算机即可识别并计算表达式的值,极大地提高了信号处理的灵活性和便捷性。ANTLR的核心工作原理包括两个主要步骤:首先是词法分析...
通过理解和使用ANTLR 2.7.6,开发者能够创建自定义的解析解决方案,提高开发效率,同时也能深入理解编译器设计和解析技术的基础知识。尽管现在有更新的版本可供选择,但是ANTLR 2.7.6作为历史版本,仍然具有一定的...
这使得ANTLR成为跨平台和跨语言的解析解决方案。 4. **语法可视化**:ANTLRWorks是ANTLR 4的集成开发环境,它提供了一个图形化的语法图界面,允许开发者直观地查看和调试语法规则。 5. **语义预测**:ANTLR 4允许...
- 虽然ANTLR可以生成词法分析器、语法分析器和树遍历器,但它并不是一个完整的编译器解决方案。用户仍然需要自己实现编译器中的其他组件,如符号表管理、错误处理等。 - 在某些复杂场景下,手动优化可能仍然是必要...
ANTLR 4 是该系列的最新版本,提供了更高效、灵活的语言解析解决方案。 #### 二、ANTLR 4 的核心功能 1. **语法分析**:ANTLR 4 支持构建复杂的语法分析器,能够识别各种形式的语言结构。 2. **词法分析**:通过...
ANTLR(ANTLR Not Another Parser Generator)是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件。...通过掌握ANTLR 3.0的核心概念和技术,你可以构建出高效、可维护的解析解决方案。
5. **调整类加载顺序**:在一些复杂的应用中,可能需要调整类加载策略,确保正确的ANTLR版本被加载。 关于`hibernate3.3.1min`这个文件,它似乎是一个Hibernate 3.3.1版本的精简版。Hibernate是一个流行的关系对象...
5. **目标语言独立**:ANTLR生成的解析器和词法分析器可以针对多种编程语言,这使得ANTLR成为一个跨平台的解决方案。 6. **丰富的社区支持**:ANTLR拥有活跃的社区,提供了大量的教程、示例和插件,便于用户学习和...
此外,ANTLR提供了无限远瞻能力,这在选择规则替代方案时非常有用。 #### LL(*)解析器 ANTLR支持LL(*)解析器,这是一种自顶向下的解析方式,其特点是从左到右进行解析,并构建输入的最左推导。LL(*)解析器的一个...
高密度脂蛋白单反 它是一套用于 VHDL/Verilog 解析、动态编译和仿真的工具。 今天,存储库包含以下...打开解决方案,然后构建(它会得到很多错误),然后关闭它并再次打开,然后构建 MSBuild 命令行 - 运行build.cmd
antlr4ts-ANTLR 4的TypeScript / JavaScript目标总览发布:请参阅页面以获取发布说明和发行版链接反馈:使用解决问题(错误,增强功能,功能和问题)要求该项目对开发人员和最终用户有单独的要求。 :light_bulb: 此...
为了解决在线考试系统中手工录入试题效率低下的问题,提出了一种基于ANTLR的自动化解决方案。该方案建立一个试卷识别器,把试卷内容作为源代码,通过词法、语法和语义分析来进行验证和识别,生成试卷模型,实现试题...
weblogic10 与hibernate冲突解决方案 错误如下:org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken linux windows 环境解决方案全解 Linux 启动脚本添加如下: export USER_...
总之,“smt-antlr4-javascript-parser”项目利用ANTLR4的强大功能,为JavaScript提供了一种高效的解析解决方案,对于需要处理JavaScript语法的开发者来说,这是一个宝贵的资源。通过深入理解ANTLR4的工作原理和这个...
总的来说,Yan-LR项目展示了如何结合ANTLR的强大功能来解析和处理YAML数据,为C++开发者提供了一种灵活且高效的解决方案。通过深入理解ANTLR的工作原理和YAML的语法规则,可以进一步定制和扩展这个解析器,以满足...
8. **社区支持**:ANTLRide背后有活跃的开发者社区,不断更新和完善,遇到问题时,开发者可以在社区中寻求帮助,分享经验和解决方案。 为了使用ANTLRide,首先需要安装Eclipse IDE,然后通过Eclipse的软件更新功能...
总之,oe-proparse是一个强大且灵活的工具,对于需要处理OpenEdge ABL代码的开发者来说,它提供了高效且可靠的解析解决方案。通过不断改进和扩展,oe-proparse将继续为OpenEdge ABL社区提供宝贵的解析支持。