我想知道,代表DFA的最佳数据结构是什么?
我正在考虑将正则表达式转换为DFA,并将此特定功能作为Java中的库。
主要的是,正则表达式中的每个实体都带有一组值而不是像“car”这样的单个字符串值。在我的情况下,每个实体都会携带许多属性,如{car,Honda,4x4,sedan,...}(虽然我不是在搜索汽车,但这只是一个例子。)
有什么建议吗?
答案 0 :(得分:0)
Web搜索将产生Java中的一些DFA示例。但是,最佳表示取决于您的具体应用要求;例如您的应用程序将如何使用DFA。我想你需要自己解决这个问题。
答案 1 :(得分:0)
如果我正确理解您的问题,您希望在动态类型的字母表中为任意常规语言设置匹配/过滤库吗?按照你的汽车示例,我想你可以创建一个表达式,以便匹配列表,其中所有汽车(颜色为红色,有2到6名乘客,每个乘客在8和8之间) 88岁)或(有1名乘客)。
巧合的是,我一直在寻找类似的东西(用于文档验证),而我能得到的最接近的是Jing; Java RELAX-NG库。遗憾的是,Jing中的字母表由XML节点组成,因此它无法解决我的问题。目前我正在尝试自己编写一个库,它可以实现这一点(基于Jing中的模式匹配,与任意类型的字母表中的常规语言匹配)。如果你想帮忙解决这个问题,请告诉我;)。
答案 2 :(得分:0)
我确信这个答案对于原始问题不会对数据有用,但是如果有人从谷歌发现这个问题......
DFA和NFA可以存储为State transition table's,然后您可以通过移动以下链接的表格来执行解析。