2024年1月25日发(作者:)
Java中queryparser简析
1、声明QueryParser类
在文件中,PARSER_BEGIN(QueryParser)和PARSER_END(QueryParser)之间,定义了QueryParser类。
其中最重要的一个函数是public Query parse(String query)函数,也即我们解析Lucene查询语法的时候调用的函数。
这是一个纯Java代码定义的函数,会直接拷贝到文件中。
parse函数中,最重要的一行代码是调用Query res =
TopLevelQuery(field),而TopLevelQuery函数是中定义的语法分析器被JavaCC编译后会生成的函数。
2、声明词法分析器
在解析词法分析器之前,首先介绍一下JavaCC的词法状态的概念(lexical state)。
有可能存在如下的情况,在不同的情况下,要求的词法词法规则不同,比如我们要解析一个java文件(即满足java语法的表达式),在默认的状态 DEFAULT下,是要求解析的对象(即表达式)满足java语言的词法规则,然而当出现"/**"的时候,其后面的表达式则不需要满足java语言的语 法规则,而是应该满足java注释的语法规则(要识别@param变量等),于是我们做如下定义:
//默认处于DEFAULT状态,当遇到/**的时候,转换为IN_JAVADOC_COMMENT状态
IN_JAVADOC_COMMENT }
//在IN_JAVADOC_COMMENT状态下,需要识别@param变量
//在IN_JAVADOC_COMMENT状态下,遇到*/的时候,装换为DEFAULT状态
<*> 表示应用于任何状态。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1706112348a1441276.html
评论列表(0条)