2010-08-17 51 views
1

我写了一个小而简单的标记器,但没有使用正则表达式。试图写一个标记器时,我应该使用正则表达式吗?

我从第一个索引开始,迭代每个字符直到结束并创建所需的标记。

我将它展示给一位同事说,如果没有进入任何深度,就会比使用正则表达式更简单。

那么我应该重写并期望它“更好”吗?

+0

如果你想。 – salathe 2010-08-17 09:13:28

回答

2

两个问题,你应该问:

一)如果事情应该改变,其中之一将是最容易维护? b)如果它正在工作,并且你不希望有任何改变,你是否真的想花更多的时间在它上面?

我敢肯定,性能差异足够小,可以忽略。编程经验,并最大限度地减少潜在的错误,是最重要的问题。

+1

个人而言,我会选择正则表达式,因为它更酷,但正则表达式可能会变得复杂,以读取/理解定义是否太宽泛。 – 2010-08-17 09:37:29

1

我不这么认为。正则表达式必须功能非常丰富,并且正因为此,程序运行速度可能会变慢。

-1

很大程度上取决于解析的语言和“更好”的定义。

3

通常可以使用有限状态机完成标记化,这相当于规范正则表达式。如果你做出正常的正则表达式,阅读和维护比自制的FSA更容易。使用像flex或jflex等工具,他们会将正则表达式编译为最小的FSA,从而提供非常好的性能。手动操作只能作为练习。

Lexers存在几种实现方式,很可能是您最喜欢的语言。