Parsing 解析编程语言并识别其组件
我正在寻找解决这个问题的步骤/库/方法Parsing 解析编程语言并识别其组件,parsing,inverted-index,code-search-engine,Parsing,Inverted Index,Code Search Engine,我正在寻找解决这个问题的步骤/库/方法 给定一个编程语言的源文件,我需要解析它并将其细分为组件 例如: 给定一个Java文件,我需要在其中找到以下内容 进口清单 课程在其中 类中的属性 方法-沿参数(如果有)。 等等 我需要提取这些并单独存储。 我想做这件事的原因是什么 我想在这些组件的顶部建立一个反向索引 反向索引的示例查询 1.查找类名为Sample的文件列表 2.查找AAA类中使用变量XXX的位置 我需要支持像上面这样的查询 所以,我的计划是给一个文件,如果我从中构建这些组件,那么在上面构
- 尝试为每种语言找到一个单独的解析器。对于主流语言来说,这可能有点成功。当你接触到不太知名的语言时,这些语言会变得很难找到。如果您成功了,您将遇到一个问题,即解析器可能是不兼容的技术;现在,将它们粘在一起,共同收集索引信息将是一团混乱
- 选择一种解析技术,获取您所关心的所有语言的语法。您只有两个现实的选择:YACC/Bison和ANTLR。 实际上,YACC和Bison已经被用来实现许多语言。。。但是语法文件并不是集中在一个地方,所以很难找到。ANTLR至少有一个存储库,您可以在其网站上找到。所以这可能是一种工作
- 尝试为每种语言找到一个单独的解析器。对于主流语言来说,这可能有点成功。当你接触到不太知名的语言时,这些语言会变得很难找到。如果您成功了,您将遇到一个问题,即解析器可能是不兼容的技术;现在,将它们粘在一起,共同收集索引信息将是一团混乱
- 选择一种解析技术,获取您所关心的所有语言的语法。您只有两个现实的选择:YACC/Bison和ANTLR。 实际上,YACC和Bison已经被用来实现许多语言。。。但是语法文件并不是集中在一个地方,所以很难找到。ANTLR至少有一个存储库,您可以在其网站上找到。所以这可能是一种工作