我正在使用转换算法从正则表达式中获取DFA。此算法仅限于运算符(*,|,。)。
对于那些不了解每个运营商含义的人,可以查看this。
该算法分析从正则表达式
创建的树的节点这里我附上了一张图片,其中显示了一个表格,其中包含可用的第一个位置和最后一个位置,该位置应用于所创建的树的每个节点。
例如:如果使用表格申请此正则表达式(a│b)*a(a│b)
分析。
算法的第一步是在每个符号的最后#
和(a│b)*a(a│b)#
添加符号enumerate
:
稍后构建树(我的问题),并在上表中讨论每个节点,保持不变。在{}
PmraPos(第一个位置)的节点右侧,在{}
UtmaPos(结束位置)左侧。
问题:在java中,我尝试构建与Stack
交谈的树,但结果很好,因为正如您在图片中看到的那样,并非所有节点都有两个孩子。我想要帮助来构建树。
注意:我尝试构建树的方法是将正则表达式传递给postfix
形式。