📜  左右线性正则文法

📅  最后修改于: 2021-06-28 07:18:52             🧑  作者: Mango

常规语法是描述常规的一种语法 语。 常规语法是一个数学对象G,它由四个分量G =(N,E P,S)组成,其中

  • N:非空的非终结符号的有限集合,
  • E:一组有限的终端符号或字母,
  • P:一组语法规则,每个规则都有一种形式
    • A⇢aB
    • A⇢∈,这里∈=空字符串,A,B∈N,a∈∑
  • 小号∈N是开始符号。

该语法可以有两种形式:

  1. 右线性正则语法
  2. 左线性正则语法

右线性正则语法

在这种类型的规则语法中,右侧的所有非终结点都位于最右边。右端。

例子 :

A ⇢ a, A ⇢ aB, A ⇢ ∈
where,
A and B are non-terminals,
a is terminal, and
∈ is empty string
S ⇢ 00B | 11S
B ⇢ 0B | 1B | 0 | 1
where,
S and B are non-terminals, and
0 and 1 are terminals

左线性正则语法

在这种类型的规则语法中,右侧的所有非结点都位于最左侧,即;左端。

例子 :

A ⇢ a, A ⇢ Ba, A ⇢ ∈
where,
A and B are non-terminals,
a is terminal, and
∈ is empty string
S ⇢ B00 | S11
B ⇢ B0 | B1 | 0 | 1
where
S and B are non-terminals, and
0 and 1 are terminals

左线性到右线性正则语法

在这种类型的转换中,我们必须将所有左手非终结符向右移动,如下例所示:

Left linear                       Right linear 
                      
                 A -> Ba                           A -> abaB     
                 B -> ab                           B -> epsilon   
                                        OR
                                            A -> abB
                                            B -> a
                                                                                                

因此,可以这样做以给出多个答案。上面说明的示例除了给定一次以外,还具有多个答案。

右线性到左线性正则语法

在这种类型的转换中,我们必须将所有右手非终结符向左移动,如下例所示:

Right linear                      Left linear
                     
                 A -> aB                             A -> Baba  
                 B -> ab                             B -> epsilon  
                                                 OR
                                                     A -> Bab
                                                     B -> a

因此,可以这样做以给出多个答案。上面说明的示例除了给定一次以外,还具有多个答案。