TPL Lect 15 - 16
TPL Lect 15 - 16
The lexical analyzer needs to scan and identify only a finite set of
valid string/token/lexeme that belong to the language in hand. It
searches for the pattern defined by the language rules.
Operations
letter = [a – z] or [A – Z]
digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 or [0-9]
sign = [ + | - ]
Decimal = (sign)?(digit)+
The only problem left with the lexical analyzer is how to verify the
validity of a regular expression used in specifying the patterns of
keywords of a language. A well-accepted solution is to use finite
automata for verification.
Some RE Examples
Set of strings of a’s and b’s of any length including the null string. So L = { ε, a,
(a+b)*
b, aa , ab , bb , ba, aaa…….}
Set of strings of a’s and b’s ending with the string abb. So L = {abb, aabb, babb,
(a+b)*abb
aaabb, ababb, …………..}
Set consisting of even number of 1’s including empty string, So L= {ε, 11, 1111,
(11)*
111111, ……….}
Set of strings consisting of even number of a’s followed by odd number of b’s ,
(aa)*(bb)*b
so L = {b, aab, aabbb, aabbbbb, aaaab, aaaabbb, …………..}
String of a’s and b’s of even length can be obtained by concatenating any
(aa + ab + ba + bb)* combination of the strings aa, ab, ba and bb including null, so L = {aa, ab, ba,
bb, aaab, aaba, …………..}
Solution:
All combinations of a's mean a may be zero, single, double and so on. If a is appearing
zero times, that means a null string. That is we expect the set of {ε, a, aa, aaa, ....}. So we
give a regular expression for this as:
1. R = a*
Example 2:
Write the regular expression for the language accepting all combinations of a's except the
null string, over the set ∑ = {a}
Solution:
The regular expression has to be built for the language
This set indicates that there is no null string. So we can denote regular expression as:
R = a+
Example 3:
Write the regular expression for the language accepting all the string containing any
number of a's and b's.
Solution:
1. r.e. = (a + b)*
This will give the set as L = {ε, a, aa, b, bb, ab, ba, aba, bab, .....}, any combination of a and
b.
The (a + b)* shows any combination with a and b even a null string.