📜  左右线性正则语法

📅  最后修改于: 2021-09-27 22:45:22             🧑  作者: Mango

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

  • N:非空的、有限的非终结符集合,
  • E:一组有限的终结符,或字母,符号,
  • P:一组语法规则,每个规则都有一个形式
    • A ⇢ aB
    • A⇢a
    • 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

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