解释连接下的上下文无关语言闭包?
这里CFL指的是上下文无关语言。现在,让我们了解串联下的闭包。
连接下的关闭
如果L1和L2是CFL,则L1L2是CFL。
按照下面给出的步骤-
L1CFL意味着L1具有生成它的CFG1。
假设CFG1中的非终结符是S、A、B、C、...。...
将CFG1中的非终结符更改为S1、A1、B1、C1、......
请勿更改CFG1中的端子。
L2CFL意味着L2具有生成它的CFG2。
假设CFG2中的非终结符是S、A、B、C、...。...
将CFG2中的非终结符更改为S2、A2、B2、C2、......
请勿更改CFG2中的端子。
现在CFG1和CFG2有不相交的非终结符集。
然后我们为L1L2创建一个CFG,如下所示-
包括所有非终结符S1,A1,B1,C1,...和S2、A2、B2、C2、......
包括CFG1和CFG2的所有作品。
创建一个新的非终结符S和一个产生式
S→S1S2
例子
CFG1 for L1 S → SS | TaTb |FFF | ∧ T → SaS | bFb | abba F → SSS | baab CFG2 for L2 S → aS | aTba | FbF | ∧ T → aSa | abab F → FabaF | bb
要为L1L2构建CFG,请按照以下步骤操作-
转换CFG1
S1 → S1S1 | T1aT1b | F1F1F1 | ∧ T1 → S1aS1 | bF1b | abba F1 → S1S1S1 | baab
转换CFG2
S2 → aS2 | aT2ba | F2bF2 | ∧ T2 → aS2a | abab F2 → F2abaF2 | bb
为L1L2构建CFG-
S → S1S2 S1 → S1S1 | T1aT1b | F1F1F1 | ∧ T1 → S1aS1 | bF1b | abba F1 → S1S1S1 | baab S2 → aS2 | aT2ba | F2bF2 | ∧ T2 → aS2a | abab F2 → F2abaF2 | bb