解析文本文件一般方法
看过一些解析文本或者源代码文件程序的代码,在写lexer的时候好像一个一个字符读进去再收集token然后分析是keyword\identifier\number...之类的方法比较多,是不是用正则表达式会比较慢?还是有部分用正则表达式无法实现?用正则表达式将文本切开再从中析下keyword\identifier\number...有什么不同?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
现在的lexer也是用正则了。
一般来说编程语言的正则表达式实现都是调用了第三方引擎的,这里有很详细的比较说明:
http://en.wikipedia.org/wiki/Comparis...
所以对比语言内置的文本处理函数来说,一个正则表达式就需要调用一次引擎,无论是内存占用、效率都要下降很多。你可以很简单运行同一个替换10W次,比较开启和不开启正则的时间和内存占用。
所以高效的文本解析应该尽可能少的使用正则表达式。