Difference between revisions of "The Flex Lexical Analyzer"

From Wiki**3

(How to Debug a Flex Specification)
Line 20: Line 20:
 
   set_debug(1);
 
   set_debug(1);
  
Also, the YYDEBUG environment variable will activate the debug messages '''both''' in Flex and YACC (allowing debug of token recognition by the scanner and use by the parser).
+
Also, the YYDEBUG environment variable will activate the debug messages '''both''' in Flex and YACC (allowing debug of token recognition by the scanner and use by the parser). In the command line (syntax may vary, depending on the actual environment definition circumstances):
 +
  export YYDEBUG=1
  
 
== Examples ==
 
== Examples ==

Revision as of 23:06, 30 March 2008

Basic Concepts

  • Definitions
  • Rules, actions
  • Code
  • States and sub-automata

Structure of a Flex Specification

How to Debug a Flex Specification

There are various flags and variables to activate the debug functionality in Flex (there is no need to insert useless code such as printfs or similar).

The debug option will activate code for debugging as will the call to the set_debug method (see the scanner header file in Compact for an example).

In the CompactScanner.l file:

%option debug

In the CompactScanner.h file (in the constructor):

 set_debug(1);

Also, the YYDEBUG environment variable will activate the debug messages both in Flex and YACC (allowing debug of token recognition by the scanner and use by the parser). In the command line (syntax may vary, depending on the actual environment definition circumstances):

 export YYDEBUG=1

Examples