何时使用语法编写解析器。使用语言功能正则表达式

时间:2010-09-23 07:15:46

标签: regex parsing antlr

在我的主人中,我已经看过如何使用ANTLR编写解析器,编译器。但在现实世界中,我们经常需要从大量的流入数据中解析和提取相关内容。每种语言都有自己的正则表达式引擎,可以方便地用于解析数据。或者,我们可以编写EBNF语法并使用像ANTLR这样的光滑工具来自动生成解析器。后一种方法不易出错,并且保证比前者更可靠(特别是在一些额外空间,新线路的情况下)。

我只想知道这两个世界之间的界限,当一个人去编写一个完整的语法并生成他自己的解析器而一个人快速使用内置的语言正则表达式引擎并推出一个可以做的小解析器工作得足够快。我不是在寻找论据,而是试图分析人们在编写解析器的程度和方法。

1 个答案:

答案 0 :(得分:3)

如果您的输入流可以通过正则表达式处理并且它不复杂,那么请使用正则表达式。 每个记录都有一个插槽和值的记录流可以通过这种方式合理地处理。

如果流具有任意嵌套的记录,通过正则表达式执行它是不切实际的(实际上是不可能的),您应该切换到使用BNF和解析器生成器。