16
Computing concepts for Compiler Design Design of Lexical Analyzer M.B.Chandak, CSE-RCOEM, NAGPUR

Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Computing concepts forCompiler Design

Design of Lexical Analyzer

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 2: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Concepts and Notations• Set: An unordered collection of unique elements

S1 = { a, b, c } S2 = { 0, 1, …, 19 } empty set: membership: x S union: S1 S2 = { a, b, c, 0, 1, …, 19 }universe of discourse: U subset: S1 Ucomplement: if U = { a, b, …, z }, then S1' = { d, e, …, z } = U - S1

• Alphabet: A finite set of symbols• Examples:

• Character sets: ASCII, ISO-8859-1, Unicode• S1= { a, b } S2 = { Spring, Summer, Autumn, Winter }

• String: A sequence of zero or more symbols from an alphabet• The empty string: ε

Page 3: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Concepts and Notations• Language: A set of strings over an alphabet

• Also known as a formal language; may not bear any resemblance to a natural language, butcould model a subset of one.

• The language comprising all strings over an alphabet is written as: *

• Graph: A set of nodes (or vertices), some or all of which may be connected by edges.• An example: – A directed graph example:

1

3

2 a

b

c

Page 4: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Regular Expression• It is a tool to express language in the form of expression.• RE uses primitive operators for expressing language.• The three operators used are: Union, Concatenation, Kleene Star.• Rules for Regular Expression:

• Every letter of alphabet set represents regular expression.• is regular expression.• is regular expression.• If r1 and r2 are regular expressions then (r1), (r2), (r1 . r2) (r1+r2) (r1*) (r2*)

will be denoted as regular expression.• Nothing else is regular expression.

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 5: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Examples on regular expressionsLanguage Regular Expression RemarksL = {an bm | n+m is even} (aa)*(bb)* + (aa)*a(bb)*b Both n and m are even

Both n and m are oddL = {All set of strings of (0,1) witheven 0s followed by odd 1s}L = {All set of strings of (0,1) witheven 0s or odd 1s}

(00)* (11)* 1

(00)* + (11)* 1

L = {a,b} No two consecutive lettersare same

Two possibilities:b (ab)* aa (ba)* b

L = {W (a,b) with length(w)=even} ((aa) (ab) (ba) (bb))*L = {W (a,b)*, such that Wcontains even number of a’s andodd number of b’s and

L = L1 UNION L2AND if L1 and L2 are regular, then Lis regular.

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 6: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Examples: Regular Expressions

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 7: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Examples:

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 8: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Examples

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 9: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Context Free Grammars

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 10: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Chomsky Hierarchy of GrammarDescription Type TerminologyUn-restricted Grammar Type – 0 No restriction on writing production rules.Context Sensitive Grammar Type – 1

aXb aYbIf X = surrounded by “a”and ”b” replace X with Y

Depending on context, non-terminals areexpanded.Tag rules of HTML language

Context Free Grammar Type -2 The production rule will only have one non—terminal on LHSPermitted rulesA aA BA any combination of terminal and non-terminalsA

Regular GrammarRestricted grammar

Type - 3 Permitted rules:A aB or A a or A

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 11: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Formal Definition of Context Free Grammar• CFG is defined as: G = (V, T, P, S)

• V = set of non-terminals• T = set of terminals• P = Production rules: of form A where y = (VUT)*• can be or single terminal or single non-terminal symbol.

• can be any combination of terminal and non-terminals• Why CFG:• Since there is no restriction on right side of production rule, it is

denoted as context free, i.e., ir-respective of surrounding, non-terminal symbol can be replaced by RHS if there exist production rule.

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 12: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Design of CFG• Example: 1: Balanced parenthesis grammar

• S (S)• S SS• S

• Example 2: Grammar for L = {an bn |n>=0}• S aSb• S

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 13: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Design of CFG• Example: 3: Even length palindrome

• S aSa• S bSb• S

• Example 4: Grammar for L = Equal number of a’s and b’• S aSb• S bSa• S SS• S

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 14: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Design of CFG• Example: 4: L = {W (0,1)* | W contains three 1’s}

• S X 1 X 1 X 1• X 0X | 1X |

• Example 5: L = {W (0,1)* | W length is odd and middle symbol is 0}• S 0S0 | 1S1 | 0S1 | 1S0

• Example 6: L = {ai bj ck | i+j = k}• S aSc | X• X bXc |

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 15: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

M.B.Chandak, CSE-RCOEM, NAGPUR

Page 16: Computing concepts for Compiler Design · Regular Expression • It is a tool to express language in the form of expression. • RE uses primitive operators for expressing language

Reading assignment• Read:

• Cross Compiler• Example of cross compiler• Bootstrapping• Example of bootstrapping

M.B.Chandak, CSE-RCOEM, NAGPUR