将任何给定的正则表达式(RE)转换为左(或右)线性语法的标准算法是什么?
我知道我可以这样做(从RE写出Linear Grammar):
RegEx -> NFA -> DFA -> Right Linear grammar
。
对于直接方法,我可以处理像(0 + 10)*
这样的简单正则表达式并创建线性语法
但是当有一个嵌套的kleene星时,很难产生一个线性的CFG,没有任何明确定义的方法。
我看到了类似问题here和here的一些答案。但它们不提供通用算法或不将正则表达式转换为线性语法。
特别是,如何使用某种算法将此(((01+10)*00)*11)*
直接转换为线性语法?
感谢任何帮助。
修改
进行了一些搜索。得到了这个。
Constructing an Equivalent Regular Grammar from a Regular Expression