为给定的正则表达式找到常规语法?

时间:2016-01-19 18:27:17

标签: grammar theory context-free-grammar regular-language

我试图找到一个生成正则表达式<xsl:function name="mf:eliminate-deep-equal-duplicates" as="node()*"> <xsl:param name="nodes"/> <xsl:sequence select="for $i in (1 to count($nodes)), $node in $nodes[$i] return $node[not(some $preceding-node in $nodes[position() lt $i] satisfies deep-equal($node, $preceding-node))]"/> </xsl:function> 给出的语言的常规语法。是否有一般技术可用于将正则表达式转换为常规语法?

1 个答案:

答案 0 :(得分:1)

将常规语言的有限自动机转换为常规语法通常要比将正则表达式转换为常规语法要容易得多。我建议首先为正则表达式构建一个自动机 - 手动或通过应用Thompson的算法将正则表达式机械转换为自动机 - 然后从那里进行转换。