24
Module 2 Module 2 How to design How to design Computer Language Computer Language Huma Ayub Software Construction Lecture 8

Module 2 How to design Computer Language

  • Upload
    ezhno

  • View
    37

  • Download
    0

Embed Size (px)

DESCRIPTION

Module 2 How to design Computer Language. Huma Ayub Software Construction Lecture 8. Previous Lecture Types of languages. How a Language for Computers is developed Alphabets. Words Vs String. Valid/In-valid alphabets Length of string - PowerPoint PPT Presentation

Citation preview

Page 1: Module 2  How to design Computer  Language

Module 2 Module 2 How to design Computer How to design Computer

LanguageLanguage

Huma Ayub

Software Construction

Lecture 8

Page 2: Module 2  How to design Computer  Language

Previous Lecture Types of languages

How a Language for Computers is developed

Alphabets

Words Vs String

Valid/In-valid alphabets

Length of string

Reverse of String

Definiation of different languages defined over alphabets

Page 3: Module 2  How to design Computer  Language

Kleene Star Closure(*)Kleene Star Closure(*) What is Closure Property ??

Given Σ, then the Kleene Star Closure of the alphabet Σ, denoted by Σ*, is the collection of all strings defined over Σ, including Λ.

It is to be noted that Kleene Star Closure can be defined over any set of strings. Examples If Σ = {x} Then Σ* = {Λ, x, xx, xxx, xxxx, ….} If Σ = {0,1} Then Σ* = {Λ, 0, 1, 00, 01, 10, 11, ….} If Σ = {aaB, c} Then Σ* = {Λ, aaB, c, aaBaaB, aaBc, caaB, cc, ….} Note Languages generated by Kleene Star Closure of set of strings, are infinite languages. (By

infinite language, it is supposed that the language contains infinite many words, each of finite length).

Page 4: Module 2  How to design Computer  Language

PLUS Operation (+)PLUS Operation (+)

Plus Operation is same as Kleene Star Closure except that it does not generate Λ (null string), automatically.

Example If Σ = {0,1} Then Σ+ = {0, 1, 00, 01, 10, 11, ….} If Σ = {aab, c} Then Σ+ = {aab, c, aabaab, aabc, caab, cc, ….}

Page 5: Module 2  How to design Computer  Language

Recursive definition of languages The following three steps are used in recursive definition Some basic words are specified in the language. Rules for constructing more words are defined in the

language. No strings except those constructed in above, are allowed to

be in the language. Examples Defining language of INTEGER Step 1: 1 is in INTEGER. Step 2: If x is in INTEGER then x+1 and x-1 are also in

INTEGER. Step 3: No strings except those constructed in above, are

allowed to be in INTEGER.

Page 6: Module 2  How to design Computer  Language

Defining language of EVENStep 1: 2 is in EVEN.Step 2: If x is in EVEN then x+2 and x-2 are also in

EVEN.Step 3: No strings except those constructed in

above, are allowed to be in EVEN.

Example RecursiveExample Recursive

Page 7: Module 2  How to design Computer  Language

Example RecursiveExample Recursive

Defining the language factorial Step 1: As 0!=1, so 1 is in factorial. Step 2: n!=n*(n-1)! is in factorial. Step 3: No strings except those constructed in above, are

allowed to be in factorial. Defining the language PALINDROME, defined over Σ

= {a,b} Step 1: a and b are in PALINDROME Step 2: if x is palindrome, then s(x)Rev(s) and xx will also

be palindrome, where s belongs to Σ* Step 3: No strings except those constructed in above, are

allowed to be in palindrome

Page 8: Module 2  How to design Computer  Language

Example RecursiveExample Recursive Defining the language {a nb n }, n=1,2,3,… , of strings defined over

Σ={a,b} Step 1: ab is in {a nbn} Step 2: if x is in {a nbn}, then axb is in {a nbn} Step 3: No strings except those constructed in above, are allowed to be

in {an bn.} Defining the language L, of strings ending in a , defined over

Σ={a,b} Step 1: a is in L Step 2: if x is in L then s(x) is also in L, where s belongs to Σ* Step 3: No strings except those constructed in above, are allowed to be

in L note: Ending character is right most

Page 9: Module 2  How to design Computer  Language

Example RecursiveExample Recursive Defining the language L, of strings beginning and ending in same

letters , defined over Σ={a, b} Step 1: a and b are in L Step 2: (a)s(a) and (b)s(b) are also in L, where s belongs to Σ* Step 3: No strings except those constructed in above, are allowed to be

in L Defining the language L, of strings containing aa or bb , defined

over Σ={a, b} Step 1: aa and bb are in L Step 2: s(aa)s and s(bb)s are also in L, where s belongs to Σ* Step 3: No strings except those constructed in above, are allowed to be

in L. Note : consisting[ fixed elements ] vs containing of [at least means

aa, bb or both]

Page 10: Module 2  How to design Computer  Language

Regular Expression

Page 11: Module 2  How to design Computer  Language

Regular ExpressionRegular Expression

As discussed earlier that a* generates Λ, a, aa, aaa, … and a+ generates a, aa, aaa, aaaa, …, so the language

L1= {Λ, a, aa, aaa, …} and L2 = {a, aa, aaa, aaaa, …} can simply be expressed by a* and a+, respectively.

a* and a+ are called the regular expressions (RE) for L1 and L2 respectively.

Note a+, aa* and a*a generate L2.

Page 12: Module 2  How to design Computer  Language

Recursive definition of Regular Expression(RE) Step 1: Every letter of Σ including Λ is a regular expression. Step 2: If r1 and r2 are regular expressions then r1 * r2 r1 + r2 r1* and r2*

are also regular expressions. Step 3: Nothing else is a regular expression.

Page 13: Module 2  How to design Computer  Language

Method 3 (Regular Expressions) Consider the language L={Λ, x, xx, xxx,…} of strings, defined over Σ

= {x}. We can write this language as the Kleene star closure of alphabet Σ or

L=Σ*={x}* . This language can also be expressed by the regular expression x*. Similarly the language L={x, xx, xxx,…}, defined over Σ = {x}, can

be expressed by the regular expression x+. Now consider another language L, consisting of all possible strings,

defined over Σ = {a, b}. This language can also be expressed by the regular expression (a + b)*.

Page 14: Module 2  How to design Computer  Language

Now consider another language L, of strings having exactly double a, defined over Σ = {a, b}, then it’s regular

expression may be b*aab*.(cover end, mid and start) Why not (a+b)*aa (a+b)* Now consider another language L, of even length, defined

over Σ = {a, b}, then it’s regular expression may be ((a+b)(a+b))*. Now consider another language L, of odd length, defined

over Σ = {a, b}, ???????

Page 15: Module 2  How to design Computer  Language

AnswerAnswer

Then it’s regular expression may be(a+b)((a+b)(a+b))* or ((a+b)(a+b))*(a+b).

Page 16: Module 2  How to design Computer  Language

RemarkRemark

It may be noted that a language may be expressed by more than one regular expression, while given a regular

expression there exist a unique language generated by that regular expression.

Page 17: Module 2  How to design Computer  Language

ExampleExample

Consider the language, defined over Σ = {a , b} of words having at least one a, may be

expressed by a regular expression (a+b)*a(a+b)*. Consider the language, defined over Σ ={a, b}, of words

starting with double a and ending in double b then its regular expression may be aa(a+b)*bb

Page 18: Module 2  How to design Computer  Language

Consider the language, defined over Σ ={a, b} of words starting with a and ending in b OR

starting with b and ending in a, then its regular expression may be a(a+b)*b+b(a+b)*a

Consider the language, defined over Σ = {a, b} of words having at least one a and one b, may be expressed by a

regular expression (a+b)*a(a+b)*b(a+b)*+ (a+b)*b(a+b)*a(a+b)*.

Page 19: Module 2  How to design Computer  Language

The Language EVEN-EVENThe Language EVEN-EVEN

An important example Language of strings, defined over Σ={a, b} having even number of a’s

and even number of b’s. i.e. EVEN-EVEN = {Λ, aa, bb, aaaa,aabb,abab, abba, baab, baba, bbaa,

bbbb,…}, its regular expression can be written as ((aa+bb)+(ab+ba)(aa+bb)*(ab+ba))* Note It is important to be clear about the difference of the following regular

expressions r1 = a*+b* r2 = (a+b)* Here r1 does not generate any string of concatenation of a and b, while

r2 generates such strings.

Page 20: Module 2  How to design Computer  Language

Equivalent Regular Equivalent Regular ExpressionsExpressions

Definition Two regular expressions are said to be equivalent if they generate the same

language. Example Consider the following regular expressions r1 = (a + b)* (aa + bb) r2 = (a + b)*aa + ( a + b)*bb then both regular expressions define the language

of strings ending in aa or bb. Note If r1 = (aa + bb) and r2 = ( a + b) then r1+r2 = (aa + bb) + (a + b) r1r2 = (aa + bb) (a + b) = (aaa + aab + bba + bbb) (r1)* = (aa + bb)*

Page 21: Module 2  How to design Computer  Language

Regular LanguagesRegular Languages

The language generated by any regular expression is called a regular language.

It is to be noted that if r1, r2 are regular expressions, corresponding to the languages L1 and L2

then the languages generated by r1+ r2, r1r2( or r2r1) and r1*( or r2*) are also regular languages.

Page 22: Module 2  How to design Computer  Language

Regular LanguagesRegular Languages

Note It is to be noted that if L1 and L2 are expressed by r1and

r2, respectively then the language expressed by r1+ r2, is the language L1 + L2 or L1 L2∪ r1r2, , is the language L1L2, of strings obtained by

prefixing every string of L1 with every string of L2 r1*, is the language L1*, of strings obtained by

concatenating the strings of L, including the null string.

Page 23: Module 2  How to design Computer  Language

Example Consider the language L, defined over Σ = {a,b}, of strings of length 2, starting

with a, then L = {aa, ab}, may be expressed by the regular expression aa+ab. Hence L, by

definition, is a regular language. Note It may be noted that if a language contains even thousand words, its RE may

be expressed, placing ‘ + ’ between all the words. Here the special structure of RE is not important. Consider the language L = {aaa, aab, aba, abb, baa, bab, bba, bbb}, that may

be expressed by a RE aaa+aab+aba+abb+baa+bab+bba+bbb, which is equivalent to (a+b)(a+b)(a+b).

All finite languages are regular

Page 24: Module 2  How to design Computer  Language

QuizQuiz