VOOZH about

URL: https://www.geeksforgeeks.org/compiler-design/dfa-in-lex-code-which-accepts-strings-ending-with-11/

⇱ DFA in LEX code which accepts strings ending with 11 - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

DFA in LEX code which accepts strings ending with 11

Last Updated : 11 Jul, 2025
Prerequisite: Designing Finite Automata Problem: Design a LEX code to construct a DFA which accepts the language: all the strings ending with "11" over inputs '0' and '1'. Examples:
Input: 100011 
Output: Accepted

Input: 100101
Output: Not Accepted

Input: asdf
Output: Invalid 
Approach: LEX provides us with an INITIAL state by default. So in order to make a DFA, use this as the initial state of the DFA. Now we define three more states A, B and DEAD where DEAD state would be use if encounter a wrong or invalid input. When user input invalid character, move to DEAD state and print message “INVALID” and if input string ends at state B then display a message “Accepted”. If input string ends at state INITIAL and A then display a message “Not Accepted”.
👁 Image

Note: To compile a LEX program, user need a UNIX system and flex which can be installed using sudo apt-get install flex. With all the above specification open UNIX terminal and do the following:
  1. Use the lex program to change the specification file into a C language program. The resulting program is in the lex.yy.c file.
  2. Use the cc command with the -ll flag to compile and link the program with a library of lex subroutines. The resulting executable program is in the a.out file.
lex lextest
cc lex.yy.c -lfl 
LEX Code: Output: 👁 Image
Comment
Article Tags:

Explore