CMSC 330: Organization of Programming Languages Theory of Regular Expressions NFAs  DFAs.

Slides:



Advertisements
Similar presentations
4b Lexical analysis Finite Automata
Advertisements

Lecture 24 MAS 714 Hartmut Klauck
Complexity and Computability Theory I Lecture #4 Rina Zviel-Girshin Leah Epstein Winter
Nondeterministic Finite Automata CS 130: Theory of Computation HMU textbook, Chapter 2 (Sec 2.3 & 2.5)
Regular Expressions and DFAs COP 3402 (Summer 2014)
Finite Automata CPSC 388 Ellen Walker Hiram College.
1 1 CDT314 FABER Formal Languages, Automata and Models of Computation Lecture 3 School of Innovation, Design and Engineering Mälardalen University 2012.
Compiler Construction
Introduction to Computability Theory
Introduction to Computability Theory
Lecture 3UofH - COSC Dr. Verma 1 COSC 3340: Introduction to Theory of Computation University of Houston Dr. Verma Lecture 3.
Courtesy Costas Busch - RPI1 Non Deterministic Automata.
Fall 2006Costas Busch - RPI1 Regular Expressions.
1 Introduction to Computability Theory Lecture2: Non Deterministic Finite Automata (cont.) Prof. Amos Israeli.
Lecture 3 Goals: Formal definition of NFA, acceptance of a string by an NFA, computation tree associated with a string. Algorithm to convert an NFA to.
Lecture 3 Goals: Formal definition of NFA, acceptance of a string by an NFA, computation tree associated with a string. Algorithm to convert an NFA to.
Fall 2006Costas Busch - RPI1 Non-Deterministic Finite Automata.
1 Non-Deterministic Automata Regular Expressions.
Introduction to Finite Automata Adapted from the slides of Stanford CS154.
CS Chapter 2. LanguageMachineGrammar RegularFinite AutomatonRegular Expression, Regular Grammar Context-FreePushdown AutomatonContext-Free Grammar.
Fall 2004COMP 3351 Another NFA Example. Fall 2004COMP 3352 Language accepted (redundant state)
Formal Language Finite set of alphabets Σ: e.g., {0, 1}, {a, b, c}, { ‘{‘, ‘}’ } Language L is a subset of strings on Σ, e.g., {00, 110, 01} a finite language,
Regular Expressions. Notation to specify a language –Declarative –Sort of like a programming language. Fundamental in some languages like perl and applications.
Basics of automata theory
1Computer Sciences Department. Book: INTRODUCTION TO THE THEORY OF COMPUTATION, SECOND EDITION, by: MICHAEL SIPSER Reference 3Computer Sciences Department.
REGULAR LANGUAGES.
Theory of Computation, Feodor F. Dragan, Kent State University 1 Regular expressions: definition An algebraic equivalent to finite automata. We can build.
Lecture 05: Theory of Automata:08 Kleene’s Theorem and NFA.
CSC 3130: Automata theory and formal languages Andrej Bogdanov The Chinese University of Hong Kong NFA to DFA.
4b 4b Lexical analysis Finite Automata. Finite Automata (FA) FA also called Finite State Machine (FSM) –Abstract model of a computing entity. –Decides.
Regular Expressions Hopcroft, Motawi, Ullman, Chap 3.
Transition Diagrams Lecture 3 Wed, Jan 21, Building Transition Diagrams from Regular Expressions A regular expression consists of symbols a, b,
1 CD5560 FABER Formal Languages, Automata and Models of Computation Lecture 3 Mälardalen University 2010.
CSCI 2670 Introduction to Theory of Computing September 1, 2005.
Regular Expressions and Languages A regular expression is a notation to represent languages, i.e. a set of strings, where the set is either finite or contains.
Decidable languages Section 4.1 CSC 4170 Theory of Computation.
CMSC 330: Organization of Programming Languages Finite Automata NFAs  DFAs.
CMSC 330: Organization of Programming Languages Theory of Regular Expressions Finite Automata.
Chapter 4 Properties of Regular Languages
INHERENT LIMITATIONS OF COMPUTER PROGAMS CSci 4011.
Regular Expressions Costas Busch - LSU.
Regular Expressions Fundamental Data Structures and Algorithms Peter Lee March 13, 2003.
UNIT - I Formal Language and Regular Expressions: Languages Definition regular expressions Regular sets identity rules. Finite Automata: DFA NFA NFA with.
CS 154 Formal Languages and Computability February 11 Class Meeting Department of Computer Science San Jose State University Spring 2016 Instructor: Ron.
Chapter 5 Finite Automata Finite State Automata n Capable of recognizing numerous symbol patterns, the class of regular languages n Suitable for.
CSCI 4325 / 6339 Theory of Computation Zhixiang Chen.
Regular Expressions CS 130: Theory of Computation HMU textbook, Chapter 3.
LECTURE 5 Scanning. SYNTAX ANALYSIS We know from our previous lectures that the process of verifying the syntax of the program is performed in two stages:
Deterministic Finite Automata Nondeterministic Finite Automata.
CS412/413 Introduction to Compilers Radu Rugina Lecture 3: Finite Automata 25 Jan 02.
Converting Regular Expressions to NFAs Empty string   is a regular expression denoting  {  } a is a regular expression denoting {a} for any a in 
1 Closure E.g., we understand number systems partly by understanding closure properties: Naturals are closed under +, , but not -, . Integers are closed.
CSE 105 theory of computation
Lexical analysis Finite Automata
CSE 105 theory of computation
Chapter 2 Finite Automata
The time complexity for e-closure(T).
Two issues in lexical analysis
Recognizer for a Language
Review: NFA Definition NFA is non-deterministic in what sense?
Hierarchy of languages
CS 154, Lecture 3: DFANFA, Regular Expressions.
COSC 3340: Introduction to Theory of Computation
Transition Diagrams Lecture 3 Fri, Jan 21, 2005.
Finite Automata Reading: Chapter 2.
4b Lexical analysis Finite Automata
Finite Automata & Language Theory
4b Lexical analysis Finite Automata
CSE 105 theory of computation
CSE 105 theory of computation
Presentation transcript:

CMSC 330: Organization of Programming Languages Theory of Regular Expressions NFAs  DFAs

CMSC 3302 Review How are DFAs and NFAs different? When does an NFA accept a string? How do we convert from a regular expression to an NFA? What is the  -closure of a state?

CMSC 3303 Relating R.E.'s to DFAs and NFAs DFANFA r.e. can transform can transform can transform (we’ll discuss this next)‏

CMSC 3304 Reduction Complexity Regular expression to NFA reduction: –O(n)‏ NFA to DFA reduction –Intuition: Build DFA where each DFA state represents a set of NFA states –How many states could there be in the DFA? –Given NFA with n states, DFA may have 2 n states –This is not so good, but we can implement DFAs more easily

CMSC 3305 NFA  DFA reduction Example: {A} {B,D} a b {C,D}

CMSC 3306 NFA  DFA reduction Algorithm Let r 0 =  -closure(q 0 ), R = {r 0 },  R = ∅ While there is an unmarked state r i in R –Mark r i –For each a   Let S = {s | {q, a, s}  and q  r i } Let E =  -closure(S)‏ If E  R, then R = R  E  R =  R  {r i, a, E} Let F R = {r i |  s  r i with s  q f } Notes: Let ( , Q, q 0, F Q,  ) be the NFA and ( , R, r 0, F R,  R ) be the DFA. All new states in R are unmarked at creation.

CMSC 3307 NFA  DFA example {A,E} R = {{A,E}, } {B,D,E} a {B,D,E}, {C,D} {C,D}, b b{E} a b a Language? All strings that have exactly 1 b and end in b or the string a Regular expression? a*b|a

CMSC 3308 Practice Convert the NFA to a DFA:

CMSC 3309 Equivalence of DFAs and NFAs Any string from A to either D or CD in the DFA represents a path from A to D in the original NFA.

CMSC Relating R.E.'s to DFAs and NFAs Regular expressions, NFAs, and DFAs accept the same languages! DFANFA r.e. can transform can transform can transform High-level idea next

CMSC Converting from DFAs to REs General idea: –Remove states one by one, labeling transitions with regular expressions –When two states are left (start and final), the transition label is the regular expression for the DFA

CMSC Relating R.E’s to DFAs and NFAs Why do we want to convert between these? –Easier to express ideas (regexes/NFAs)‏ –Easier to implement (DFAs)‏

CMSC Implementing DFAs cur_state = 0; while (1) { symbol = getchar(); switch (cur_state) { case 0: switch (symbol) { case '0': cur_state = 0; break; case '1': cur_state = 1; break; case '\n': printf("rejected\n"); return 0; default: printf("rejected\n"); return 0; } break; case 1: switch (symbol) { case '0': cur_state = 0; break; case '1': cur_state = 1; break; case '\n': printf("accepted\n"); return 1; default: printf("rejected\n"); return 0; } break; default: printf("unknown state; I'm confused\n"); break; } It's easy to build a program which mimics a DFA

CMSC Implementing DFAs (Alternative)‏ Alternatively, use generic table-driven DFA –q is just an integer –Represent δ using arrays or hash tables –Represent F as a set given components (Σ, Q, q 0, F, δ) of a DFA: let q = q 0 while (there exists another symbol s of the input string)‏ q := δ(q, s); if q ∊  F then accept else reject

CMSC Run Time of Algorithm Given a string s, how long does algorithm take to decide whether s is accepted? –Assume we can compute δ(q0, c) in constant time –Time per string s to determine acceptance is O(|s|)‏ –Can’t get much faster! But recall that constructing the DFA from the regular expression A may take O(2 |A| ) time –But this is usually not the case in practice So there’s the initial overhead, but then accepting strings is fast

CMSC Regular Expressions in Practice Regular expressions are typically “compiled” into tables for the generic algorithm –Can think of this as a simple byte code interpreter –But really just a representation of (Σ, Q A, q A, {f A }, δ A ), the components of the DFA produced from the r.e.

CMSC Complement of DFA Given a DFA accepting language L, how can we create a DFA accepting its complement? (the alphabet = {a,b})‏

CMSC Complement Steps Add implicit transitions to a dead state Change every accepting state to a non- accepting state and every non-accepting state to an accepting state Note: this only works with DFAs - Why?

CMSC Practice Make the DFA which accepts the complement of the language accepted by the DFA below. S3

CMSC Practice Convert to a DFA: Convert to an NFA and then to a DFA: (0|1)*11|0* strings of alternating 0 and 1 aba*|(ba|b)‏

CMSC Practice Make the DFA which accepts all strings with a substring of 330 Take the complement of this DFA

CMSC Considering Ruby Again –Interpreted –Implicit declarations –Dynamically typed These three make it quick to write small programs –Built-in regular expressions and easy string manipulation This and the three above are the hallmark of scripting languages –Object-oriented Everything (!) is an object –Code blocks Easy higher-order programming! Get ready for a lot more of this...

CMSC Other Scripting Languages Perl and Python are also popular scripting languages –Also are interpreted, use implicit declarations and dynamic typing, have easy string manipulation –Both include optional “compilation” for speed of loading/execution Will look fairly familiar to you after Ruby –Lots of the same core ideas –All three have their proponents and detractors –Use whichever one you like best