我编写了一个小而简单的标记化程序,但没有使用正则表达式。
我从第一个索引开始,遍历每个字符直到结束并创建所需的标记。
我向一位同事表明,如果不进入任何深度,那么使用正则表达式会更简单。
我应该重写并期望它“更好”吗?
答案 0 :(得分:3)
通常,标记化可以使用有限状态机完成,这相当于规范正则表达式。如果你做出理智的正则表达式,它将比自制的FSA更容易阅读和维护。使用像flex或jflex这样的工具,他们会将正则表达式编译成最小的FSA,从而提供非常好的性能。手动执行此操作只能作为练习进行。
Lexers存在于多个实现中,很可能是您最喜欢的语言。
答案 1 :(得分:2)
你应该问两个问题:
a)如果某些事情发生变化,哪一个最容易维护?
b)如果它正在运作并且你不希望有任何改变,你真的想花更多的时间吗?
我确信性能差异小到可以忽略不计。编程经验和最小化潜在错误是最重要的问题。
答案 2 :(得分:1)
我不这么认为。正则表达式必须非常丰富,因此你的程序运行速度可能会变慢。
答案 3 :(得分:-1)
非常依赖于解析的语言和“更好”的定义。