How can I convert some regular language to its equivalent Context Free Grammar? Is it necessary to construct the DFA corresponding to that regular expression or is there some rule for such a conversion?
For example, consider the following regular expression
01+10(11)*
How can I describe the grammar corresponding to the above RE?
Definitely, you can construct a CFG that result in a given regular expression.
CFG stands for context-free grammar. It is is a formal grammar which is used to generate all possible patterns of strings in a given formal language. Context-free grammar G can be defined by four tuples as: G = (V, T, P, S)
Consider the regular expression (a + b)*a. We will now construct a regular grammar for this regular expression. For every terminal symbol a, we create a regular grammar with the rule S \arrow a, start symbol S. We then apply the transformations to these regular grammars, progressively constructing the regular grammar.
Change A+B to grammar
G -> A
G -> B
Change A* to
G -> (empty)
G -> A G
Change AB to
G -> AB
and proceed recursively on A and B. Base cases are empty language (no productions) and a single symbol.
In your case
A -> 01
A -> 10B
B -> (empty)
B -> 11B
If the language is described by finite automaton:
I guess you mean convert it to a formal grammar with rules of the form V->w, where V is a nonterminal and w is a string of terminals/nonterminals. To start, you can simply say (mixing CFG and regex syntax):
S -> 01+10(11)*
Where S is the start symbol. Now let's break it up a bit (and add whitespace for clarity):
S -> 0 A 1 0 B
A -> 1+
B -> (11)*
The key is to convert *
es and +
es to recursion. First, we'll convert the Kleene star to a plus by inserting an intermediate rule that accepts the empty string:
S -> 0 A 1 0 B
A -> 1+
B -> (empty)
B -> C
C -> (11)+
Finally, we'll convert +
notation to recursion:
S -> 0 A 1 0 B
A -> 1
A -> A 1
B -> (empty)
B -> C
C -> 11
C -> C 11
To handle x?
, simply split it into a rule producing empty and a rule producing x .
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With