我正在尝试使用Ragel来实现简单的yes / no fsm。不幸的是,语言规范由大约一千个正则表达式的并集组成,其中*运算符在其中大多数出现一次或多次。因此,可能的状态数量激增,似乎无法使用Ragel为我的语言生成fsm。有没有可以满足我需要的工具,还是应该调换方法?我需要比依次检查每个正则表达式的输入字符串更好的方法。我可以将数千个正则表达式切成约50个块,并为每个块生成一个fsm,然后在所有机器上运行每个输入字符串,但是如果有一个工具可以处理此类工作而又没有这种黑客,我会很高兴听到它。
谢谢!
最佳答案
好吧,我最终将机器分成多台机器,以防止Ragel占用所有可用的内存-实际上,我不得不将机器分解成几个单独的Ragel文件,因为生成的Java类包含太多常量它是由巨大的状态表生成的。如果有人有一个更好的解决方案,我仍然很感兴趣!