Regular Expressions are capable of describing the syntax of Tokens. Any syntactic construct that can be described by Regular Expression can also be described by the Context free grammar.
S --> aA|bA A --> aA|bA|0A|1A|e
*e denotes epsilon.
The Context-free grammar form NFA for the Regular Expression using the following construction rules:
- For each state there is a Non-Terminal symbol.
- If state A has a transition to state B on a symbol a
- IF state A goes to state B, input symbol is e
- If A is accepting state.
- Make the start symbol of the NFA with the start symbol of the grammar.
Every Regular set can be described the Context-free grammar that’s why we are using Regular Expression. There are several reasons and they are:
|Regular Expressions||Context-free grammar|
|Lexical rules are quite simple in case of Regular Expressions.||Lexical rules are difficult in case of Context free grammar.|
|Notations in regular expressions are easy to understand.||Notations in Context free grammar are quite complex.|
|A set of string is defined in case of Regular Expressions.||In Context free grammar the language is defined by the collection of productions.|
|It is easy to construct efficient recognizer from Regular Expressions.||By using the context free grammar, it is very difficult to construct the recognizer.|
|There is proper procedure for lexical and syntactical analysis in case of Regular Expressions.||There is no specific guideline for lexical and syntactic analysis in case of Context free grammar.|
|Regular Expressions are most useful for describing the structure of lexical construct such as identifiers, constant etc.||Context free grammars are most useful in describing the nested chain structure or syntactic structure such as balanced parenthesis, if else etc.|
and these can’t be define by Regular Expression.