Parsing 人们如何使用解析器,比如antlr javacc?

Parsing 人们如何使用解析器,比如antlr javacc?,parsing,antlr,javacc,Parsing,Antlr,Javacc,出于好奇,我想知道人们可以用解析器做什么,它们是如何应用的,人们通常用它来创建什么 我知道它广泛应用于编程语言行业,但我认为这只是它的一小部分,对吗?它们用于解析文本 举一个更具体的例子,在我工作的地方,我们使用lexx/yacc来解析来自套接字的字符串 此外,从名称来看,它应该让您了解javacc的用途(java编译器!)通常用于解析特定于域的语言或脚本语言,或类似的代码剪贴画支持。除了特殊用途的语言之外,我最雄心勃勃地使用解析器生成器(在C语言中使用了很好的yacc,后来又使用了Python

出于好奇,我想知道人们可以用解析器做什么,它们是如何应用的,人们通常用它来创建什么


我知道它广泛应用于编程语言行业,但我认为这只是它的一小部分,对吗?

它们用于解析文本


举一个更具体的例子,在我工作的地方,我们使用lexx/yacc来解析来自套接字的字符串


此外,从名称来看,它应该让您了解javacc的用途(java编译器!)

通常用于解析特定于域的语言或脚本语言,或类似的代码剪贴画支持。

除了特殊用途的语言之外,我最雄心勃勃地使用解析器生成器(在C语言中使用了很好的yacc,后来又使用了Python中的pyparsing)就是要从SQL查询中提取、验证并可能修改某些元信息——正确解析SQL是一个真正的挑战(特别是如果您希望支持多种方言的话!),解析器生成器(以及它上面的词法分析器)至少要删除这部分工作!)

之前,我看到它被用来解析另一个软件工具基于命令行的输出。这样,外部工具(VPN软件)可以无需修改即可重新使用基本路由器IPSec代码。因为很多被解析的是IP路由表和其他结构化的重复文本


当格式改变时,使用解析器可以进行简单的更改,而不是试图通过手工编写的解析器来查找和调整格式。而且输出确实改变了产品寿命的几倍。

我使用解析器帮助将+/-800 Clipper源文件处理成类似的PRG,这些PRG可以用Alaksa Xbase 32编译。

您可以使用它来扩展您最喜欢的语言,方法是从其存储库中获取其语言定义,然后添加您一直想要的内容有。您可以将常规语法传递给应用程序,并在自己的程序中处理扩展。

Yeah。。我记得在db框架hibernate中注意到antlr。在SQL或HQL域中,它确实是一个非常有用的工具。“我们使用lexx/yacc来解析来自套接字的字符串”->这也很酷;)