除文法的左递归性可以采用以下方法:
- 直接左递归转换为间接左递归
- 消除间接左递归
举例说明:
直接左递归转换为间接左递归
原文法:A → Aα | β
转换后的文法:A → βA'
A' → αA' | ε
例如:S → Sabc | ε
转换后的文法:S → εS'
S' → abcS' | ε
消除间接左递归
原文法:A → Aα1 | Aα2 | ... | Aαm | β1 | β2 | ... | βn
转换后的文法:A → β1A' | β2A' | ... | βnA'
A' → α1A' | α2A' | ... | αmA' | ε
例如:S → Sa | Sb | A
转换后的文法:S → A S'
S' → aS' | bS' | ε
A → ε
例如:E → E + T | E - T | T
转换后的文法:E → TE'
E' → +TE' | -TE' | ε
T → a | b | c
例如:A → Aa | Ab | B
转换后的文法:A → BA'
A' → aA' | bA' | ε文章来源:https://www.toymoban.com/news/detail-455096.html
B → ε文章来源地址https://www.toymoban.com/news/detail-455096.html
到了这里,关于怎么消除文法的左递归性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!