当前位置:  开发笔记 > 开发工具 > 正文

你有没有在现实世界的应用程序中有效地使用词法分析器/解析器?

如何解决《你有没有在现实世界的应用程序中有效地使用词法分析器/解析器?》经验,为你挑选了2个好方法。

最近,我开始学习ANTLR.我知道lexers/parsers可以用来构建编程语言.

除了DSL或编程语言之外,您是否曾直接或间接使用词法分析器/解析器工具(和知识)来解决实际问题?普通程序员是否有可能在不了解词法分析器或解析器的情况下解决这些问题?



1> MarkusQ..:

是的,我用过它们.是的,你可以用它们做事 - 但是每当你为工作选择错误的工具时,你都会为自己做出不必要的痛苦.

我个人将该技术应用于非标准用途的一些例子:

从遗留系统生成的报告中抓取数据

选择数据中的模式对于正则表达式而言过于复杂

协议分析

基于文本的冒险游戏

吃托莱多的元编程API(不是它的真名)

代码分析/日志分析

在数据库中挑选"自由形式"字段

和更多我忘了(我老了)



2> Ash..:

语法突出显示.在赛特文本编辑器允许你写自己的词法分析器(用C++),以提供语法高亮任何自定义语言.我为Scite编写了自己的自定义词法分析器作为对这个主题的复习(我刚刚在我的大学学习过它).

正则表达式通常用作模式匹配和简单语言处理的替代方法.由于在.NET等框架中改进了RegEx支持,这在近几年更为常见.在许多情况下,开发人员可能甚至不知道lexing/parsing技术,因此默认情况下属于使用Regex.

然而,正如另一个答案所说的那样,正则表达式可以很快变得低效,缓慢且难以维护,而不仅仅是简单的语法/语言.在那种情况下,解析器/词法分析器通常是最佳选择.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有