当前位置: 首页 > 面试题库 >

Java语言解析器

仲孙逸明
2023-03-14
问题内容

任何人都可以为Java推荐一个不错的Java解析器吗?我相信可以使用Rhino,但是仅仅进行解析似乎是一个过大的选择,还是唯一的不错的解决方案?任何建议将不胜感激。谢谢。


问题答案:

来自https://github.com/google/caja/blob/master/src/com/google/caja/parser/js/Parser.java

下面的语法是此解析器解析的语法的上下文无关表示。它与EcmaScript 262 Edition 3(ES3)不同,在EcmaScript 262
Edition
3中,实现与ES3不同。代码中已详细注释了分号插入的规则以及正确处理回溯所需的表达式中可能发生的回溯,因为分号插入需要来自词法分析器和解析器的信息,并且无法通过有限的超前方式确定。

值得注意的功能

  1. 在错误不会阻止任何进一步错误的队列上报告警告,以便我们可以在一次编译过程中报告多个错误,而不是强迫开发人员玩弄乱子。
  2. 不解析Firefox样式,catch (<Identifier> if <Expression>)因为它们不适用于IE和许多其他解释器。
  3. 可以识别,const因为许多口译员会这样做(不是IE),但会发出警告。
  4. 允许但警告在ArrayObject构造函数中的尾部逗号。
  5. 允许使用关键字作为标识符名称,但是会因为不同的解释器具有不同的关键字集而发出警告。这使我们可以使用扩展关键字集。

要解析严格的代码,请传入PedanticWarningMessageQueue并将转换MessageLevel#WARNING为的MessageLevel#FATAL_ERROR

CajaTestCase.js演示如何设置解析器,同一类中的[
fromResource]和[ fromString]显示如何获取正确类型的输入。



 类似资料:
  • 本文向大家介绍Objective-C语言XML解析,包括了Objective-C语言XML解析的使用技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我正在尝试将包含(自然语言)时间的字符串解析为 hh:mm 时间对象?例如: 我已经研究了Ruby的Chronic和Java的Natty(以及其他一些库),但是它们似乎都专注于解析日期。诸如“十点五”之类的字符串均无法正确解析。 有人知道适合我需要的图书馆吗?还是应该开始使用自己的解析器? 问题答案: 我不想延长parsedatetime,因此我决定使用pyPEG(Python的解析器

  • 本文向大家介绍Java语言资源国际化步骤解析,包括了Java语言资源国际化步骤解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Java语言资源国际化步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 语言资源国际化步骤: 1. 定义资源文件(如:language),需要使用命令native2ascii命令进行转码;(nativ

  • 本文向大家介绍Java语言一元运算符实例解析,包括了Java语言一元运算符实例解析的使用技巧和注意事项,需要的朋友参考一下 一元运算符,也叫单项算符,一目运算符,一元算符 ,英文名字:UnaryOperator。 描述:接受一个参数为类型T,返回值类型也为T。 源码: 测试代码: 总结 以上就是本文关于Java编程一元运算符的实例介绍,希望对大家有所帮助。感谢大家对本站的支持。

  • 本文向大家介绍Java语言求解完美数代码分析,包括了Java语言求解完美数代码分析的使用技巧和注意事项,需要的朋友参考一下 1、概念 首先我们理解一下,什么叫做完美数? 问题描述:若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。简称“完数” 例如,   6=1+2+3   28=1+2+4+7+14   496=1+2+4+8+16+31+62+124+2

  • 本文向大家介绍C语言实现xml构造解析器,包括了C语言实现xml构造解析器的使用技巧和注意事项,需要的朋友参考一下 纯C实现xml构造解析器,所有实现只有一个.c一个.h文件组成,简单易用,易于扩展。