Lecture 4 RegExpr ? NFA ? DFA - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

Lecture 4 RegExpr ? NFA ? DFA

Description:

boat. count. x. int. int. float. func. double. null. 5 ... PURPOSE: Hash determines hash value based on the sum of the. character values in the string. ... – PowerPoint PPT presentation

Number of Views:79
Avg rating:3.0/5.0
Slides: 26
Provided by: mantonm5
Category:
Tags: dfa | nfa | regexpr | boat | lecture | values

less

Transcript and Presenter's Notes

Title: Lecture 4 RegExpr ? NFA ? DFA


1
Lecture 4 RegExpr ? NFA ? DFA
CSCE 531 Compiler Construction
  • Topics
  • Thompson Construction
  • Subset construction
  • Readings 3.7, 3.6

January 23, 2006
2
Overview
  • Last Time
  • Flex
  • Symbol table - hash table from KR
  • Todays Lecture
  • DFA review
  • Simulating DFA figure 3.22
  • NFAs
  • Thompson Construction re ? NFA
  • Examples
  • NFA ? DFA, the subset construction
  • e closure(s), e closure(T), move(T,a)
  • References

3
Hash Table
  • define ENDSTR 0
  • define MAXSTR 100
  • include ltstdio.hgt
  • struct nlist / basic table entry /
  • char name
  • int val
  • struct nlist next /next entry in
    chain /
  • define HASHSIZE 100
  • static struct nlist hashtabHASHSIZE /
    pointer table /

4
Hashtable











. . .
null
double
x

int
func
xbar
foo
. . .

int
float
. . .
boat
count
5
The Hash Function
  • / PURPOSE Hash determines hash value based on
    the sum of the
  • character values in the string.
  • USAGE n hash(s)
  • DESCRIPTION OF PARAMETERS s(array of char)
    string to be hashed
  • AUTHOR Kernighan and Ritchie
  • LAST REVISION 12/11/83
  • /
  • hash(char s) / form hash value for
    string s /
  • int hashval
  • for (hashval 0 s ! '\0' )
  • hashval s
  • return (hashval HASHSIZE)

6
The lookup Function
  • /PURPOSE Lookup searches for entry in symbol
    table and returns a pointer
  • USAGE np lookup(s)
  • DESCRIPTION OF PARAMETERS s(array of char)
    string searched for
  • AUTHOR Kernighan and Ritchie
  • LAST REVISION 12/11/83/
  • struct nlist lookup(char s) / look for s in
    hashtab /
  • struct nlist np
  • for (np hashtabhash(s) np ! NULL
    np np-gtnext)
  • if (strcmp(s, np-gtname) 0)
  • return(np)
    / found it /
  • return(NULL) / not found /

7
The install Function
  • /
  • PURPOSE Install checks hash table using lookup
    and if entry not found, it "installs" the entry.
  • USAGE np install(name)
  • DESCRIPTION OF PARAMETERS name(array of char)
    name to install in symbol table
  • AUTHOR Kernighan and Ritchie, modified by Ron
    Sobczak
  • LAST REVISION 12/11/83
  • /

8
  • struct nlist install(char name) / put
    (name) in hashtab /
  • struct nlist np, lookup()
  • char strdup(), malloc()
  • int hashval
  • if ((np lookup(name)) NULL)
    / not found /
  • np (struct nlist )
    malloc(sizeof(np))
  • if (np NULL)
  • return(NULL)
  • if ((np-gtname strdup(name))
    NULL)
  • return(NULL)
  • hashval hash(np-gtname)
  • np-gtnext hashtabhashval
  • hashtabhashval np
  • return(np)

9
NFAs (Non-deterministic Finite Automata)
  • Recall from last Time
  • M (S, S, s0, d, SF)
  • S - alphabet
  • S - states
  • d state transition function
  • s0 start state
  • SF set of final or accepting states
  • L(M) x such that it is possible to follow a
    path in the transition diagram labeled x that
    ends in an accepting state.

10
NFA transition function
  • NFAs relax the functional nature of the
    transition function
  • d(s, a), the nextstate for state s and input a,
    is a subset of states

11
Equivalence NFA, DFA, RE
  • RegExpr ? NFA Thompson Construction
  • NFA ? DFA Subset Construction
  • DFA ? DFA DFA minimization
  • DFA ? tables for scanner
  • DFA ? RegExpr Kleene Construction

12
Converting Regular Expressions to NFAs
  • Ken Thompson (1968) outlined a regular expression
    to NFA conversion algorithm for use in an editor
  • Future fame?
  • How would we use regular expressions in an
    editor?
  • Unix regular expressions
  • Grep family Global Regular Expressions Print
    prints all lines in a file that contain a match
    to the regular expression
  • Variations
  • Fgrep fast fixed regular expression just a
    string
  • Egrep goes through NFA ? DFA and minimization

13
Restrictions on NFAs in Thompson Construction
  • Constructs an NFA from the regular expression
    with the following restrictions
  • The NFA has a single start state, s0, and single
    final state, sf.
  • There are no transitions coming into the start
    state
  • and no transitions leaving the final state.
  • A state has at most 2 exiting e transitions
    and at most 2 entering e transitions.

s0
sf
14
Base Cases of Thompson Construction
  • For a e S the NFA Ma (S, s0, sf, d, s0,
    sf) that accepts it is
  • For e the NFA Me (S, s0, sf, d, s0, sf)
    that accepts it is

15
Recursive Cases of Thompson Construction
  • For regular expressions R and S with machines MR
    and MS
  • MR (S, SR, dR, r0, rf) MS (S, SS, dS, s0,
    sf)
  • Then the NFA
  • MRS (S, SR U SS U new0, newf, dRS, new0,
    newf)

16
Recursive Cases of Thompson Construction RS
  • For regular expressions R and S with machines MR
    and MS
  • MR (S, SR, dR, r0, rf) MS (S, SS, dS, s0,
    sf)
  • Then the NFA
  • MRS (S, SR U SS U new0, newf, dRS, new0,
    newf)

17
Recursive Cases of Thompson Construction RS
  • For regular expressions R and S with machines MR
    and MS
  • MR (S, SR, dR, r0, rf) MS (S, SS, dS, s0,
    sf)
  • Then the NFA
  • MRS (S, SR U SS U new0, newf, dRS, new0,
    newf)

18
Recursive Cases of Thompson Construction R
  • For regular expression R with machine MR
  • MR (S, SR, dR, r0, rf)
  • Then the NFA
  • MR (S, SR U new0, newf, dR, new0, newf)

19
Thompson example
  • Fig 3.16 has one lets do another RegExpr
    abb(ab)

20
NFA to DFA the Subset Construction
  • In an NFA given an input string we make choices
    about which way to go. We can think of it as
    being in a subset of the states.
  • To convert to a DFA
  • The states of the DFA correspond to sets of
    states of the NFA
  • Transitions of the DFA are when you can move
    between the sets in the NFA

21
Subset Construction Functions
  • We will use a collection of functions to
    facilitate seeing all of the states we can get to
    from one on a given input.
  • ?-closure(si) is set of states reachable from
    si by ? arcs
  • ?-closure(T) is set of states reachable from
    T by ? arcs
  • Move(T, a) is set of states reachable from T
    by a

22
The Subset Construction Algorithm
  • D0 ?-closure(s0) // s0 the start state of
    the NFA
  • Add D0 to Dstates as unmarked state
  • While there is an unmarked state T in Dstates
  • mark T
  • for each input symbol a do
  • U ?-closure(move(T, a))
  • if U is not in Dstates then
  • add U as unmarked state to Dstates
  • DtransT, a U
  • end
  • end
  • end

23
Example of Subset Construction
  • Figure 3.35 ? fig 3.37 in text
  • Example 2

24
Lexical analyzer for subset of C
  • int constants int, octal, hex,
  • Float constants
  • C identifiers
  • Keywords
  • for, while, if, else
  • Relational operators
  • lt gt gt lt !
  • Arithmetic, Boolean and bit operators
  • - / !
  • Other symbols
  • -gt

25
Write core.l Flex Specification
  • Due Monday Jan 30
  • Notes
  • Install Identifiers and constants into symbol
    table
  • Return separate token code for each relational
    operator. Not as in text!!
  • Homework 02 Dues Thursday Jan 26 (now Saturday
    28)
  • Construct NFA for recognizing (abe)(ab)
  • Convert to DFA
Write a Comment
User Comments (0)
About PowerShow.com