2021SC@SDUSC
书接上文,根据分工,我负责对parser包中的源码进行解析,因此我将首先对parser包进行一个基本的概述,然后再来进行其中源码的分析。
一、parser包基本概述
如图所示,parser包内又有诸多子包,分别是charniak, common, dvparser, eval, lexparser, metrics, nndep, server, shiftreduce, tools, ui和webapp。从名字上不难看出,parser包内的代码支撑起了整个程序的语法解析功能。而其中名字诸如dvparser, lexparser的子包,则是存放了具体解析功能分支的功能模块包。其余子包名如common, ui, eval, webapp, tools, server的,则不难理解其存储源码的作用分别是常规源码、用户界面源码、评估源码、网页程序源码、工具源码以及服务器端源码。至于最后剩下的一些子包名字多是缩写,需要进一步分析才能得知其中源码的意义与作用。
二、common子包基本概述
首先,来看所谓的常规源码——即common子包内的源码。打开common子包,可以看到其中有9个java语言编写的源文件,通过IDEA的源文件图标不难看出,ParserGrammar是其中的抽象类,ParserQuery是一个接口,ParserQueryFactory则显然是ParserQuery的抽象工厂,而剩下的均是实现类。根据自顶向下的原则,我将首先分析ParserGrammar这个抽象类(ParserQuery和它的抽象类被囊括在内