双向下推自动机与非自嵌入文法解析
双向下推自动机(BPDA)
在形式语言处理中,双向下推自动机(Bidirectional Push - Down Automata,BPDA)是一种重要的计算模型。它被定义为一个五元组 $(V_T, V_S, \Theta_B, \$0, \$f)$ ,其中 $\Theta_B$ 包含 SWAPR、SWAPL、PUSHR、PUSHL、POPR、POPL 和 PUSHU 等转换。
栈操作的限制保证了输入字符串的正确读取,例如 POPR 和 POPL 转换不能弹出跨越重叠子串的栈元素。下面是一个将上下文无关文法编译成实现预测头角解析策略的双向下推自动机的示例:
- 预测头角解析策略 :适用于每个产生式右侧有一个元素被标记为产生式头部的上下文无关文法。对于空产生式 $A \to \epsilon$ ,空字符串 $\epsilon$ 被视为产生式的头部。头角关系 $>_h$ 定义为:若存在产生式 $A \to \alpha X \beta$ 且 $X$ 是产生式的头部,则 $A >_h X$ ;若 $A \to \epsilon$ ,则 $A >_h \epsilon$ ,其传递自反闭包记为 $>_h^ $ 。
- 自动机的组成部分 *:
- $V_T$ 是源文法的终结符集合。
- $V_S$ 是 ${\$0, \$f}$ 、源文法的非终结符集合以及用于表示产生式部分已被识别的带点产生式 $A \to \alpha \cdot \beta \cdot \gamma$ 的并集。
- 初始元素 $\$0$ 用于启动计算,最终
超级会员免费看
订阅专栏 解锁全文
958

被折叠的 条评论
为什么被折叠?



