040_Flex_In_A_Nutshell

040_Flex_In_A_Nutshell - CS143 Summer2011 Handout04...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
CS143 Handout 04 Summer 2011 June 22, 2011 flex  In A Nutshell Handout written by Julie Zelenski with minor edits by Keith. flex  is a fast lexical analyzer generator.  You specify the scanner you want in the form  of patterns to match and actions to apply for each token.   flex  takes your specification  and generates a combined NFA to recognize all your patterns, converts it to an  equivalent DFA, minimizes the automaton as much as possible, and generates C code  that will implement it.   flex  is similar to another tool,  lex , designed by Lesk and  Schmidt, and bears many similarities to it.  While we will use  flex  in the course, almost  all features we use are also present in the original  lex . This handout is designed to give you a quick introduction to the  flex  tool.  This should  serve as a useful reference for the first programming assignment.  However, you should  be aware that in order to complete the first assignment, you may need to use some more  advanced features of  flex  that aren't covered here.  To learn more about flex, run  info flex , or read the documentation at  http://flex.sourceforge.net/manual/ . How It Works flex  is designed for use with C code and generates a scanner written in C.  The scanner  is specified using regular expressions for patterns and C code for the actions. The  specification files are traditionally identified by their  .l  extension.  You invoke  flex  on .l  file and it creates  lex.yy.c ,  a source file containing a wad of unrecognizable C  code that implements a FA encoding all your rules and including the code for the actions  you specified.  The file provides an  extern  function  yylex()  that will scan one token.  You compile that C file normally, link with the  lex  library, and you have built a  scanner! The scanner reads from  stdin  and writes to  stdout  by default. % lex myFile.l creates  lex.yy.c  containing C code for scanner % gcc -o scan lex.yy.c -ll compiles scanner, links with  lex  lib % ./scan executes scanner, will read from  stdin Linking with the  lex  library provides a simple  main  that will repeatedly calls  yylex until it reaches  EOF . You can also compile and link the scanner into your project and use  your own  main  to control when tokens are scanned. The  Makefile s we provide for the  projects will execute the compilation steps for you, but it is worthwhile to understand  the steps required.
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
flex  Input File flex  input files are structured as follows: %{ Declarations %} Definitions %% Rules %% User subroutines The optional  Declarations  and  User
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

This document was uploaded on 07/18/2011.

Page1 / 6

040_Flex_In_A_Nutshell - CS143 Summer2011 Handout04...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online