Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

lexer.cc File Reference

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <iostream>
#include "keywords.cc"
#include <unistd.h>

Defines

#define YY_INT_ALIGNED   short int
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION   2
#define YY_FLEX_MINOR_VERSION   5
#define YY_FLEX_SUBMINOR_VERSION   31
#define FLEX_BETA
#define INT8_MIN   (-128)
#define INT16_MIN   (-32767-1)
#define INT32_MIN   (-2147483647-1)
#define INT8_MAX   (127)
#define INT16_MAX   (32767)
#define INT32_MAX   (2147483647)
#define UINT8_MAX   (255U)
#define UINT16_MAX   (65535U)
#define UINT32_MAX   (4294967295U)
#define yyconst
#define YY_NULL   0
#define YY_SC_TO_UI(c)   ((unsigned int) (unsigned char) c)
#define BEGIN   (yy_start) = 1 + 2 *
#define YY_START   (((yy_start) - 1) / 2)
#define YYSTATE   YY_START
#define YY_STATE_EOF(state)   (YY_END_OF_BUFFER + state + 1)
#define YY_NEW_FILE   utap_restart(utap_in )
#define YY_END_OF_BUFFER_CHAR   0
#define YY_BUF_SIZE   16384
#define EOB_ACT_CONTINUE_SCAN   0
#define EOB_ACT_END_OF_FILE   1
#define EOB_ACT_LAST_MATCH   2
#define YY_LESS_LINENO(n)
#define yyless(n)
#define unput(c)   yyunput( c, (yytext_ptr) )
#define YY_BUFFER_NEW   0
#define YY_BUFFER_NORMAL   1
#define YY_BUFFER_EOF_PENDING   2
#define YY_CURRENT_BUFFER
#define YY_CURRENT_BUFFER_LVALUE   (yy_buffer_stack)[(yy_buffer_stack_top)]
#define YY_FLUSH_BUFFER   utap__flush_buffer(YY_CURRENT_BUFFER )
#define yy_new_buffer   utap__create_buffer
#define yy_set_interactive(is_interactive)
#define yy_set_bol(at_bol)
#define YY_AT_BOL()   (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
#define yytext_ptr   utap_text
#define YY_DO_BEFORE_ACTION
#define YY_NUM_RULES   69
#define YY_END_OF_BUFFER   70
#define REJECT   reject_used_but_not_detected
#define yymore()   yymore_used_but_not_detected
#define YY_MORE_ADJ   0
#define YY_RESTORE_YY_MORE_OFFSET
#define YY_DECL   int lexer_flex(void)
#define YY_USER_INIT   yylloc.reset();
 Location tracking inside scanner, taken from http://www.lrde.epita.fr/people/akim/compil/gnuprog2/Advanced-Use-of-Flex.html.

#define YY_USER_ACTION   yylloc.step(); yylloc.last_column+=utap_leng;
#define YY_FATAL_ERROR(msg)   { throw TypeException(msg); }
#define INITIAL   0
#define comment   1
#define YY_EXTRA_TYPE   void *
#define YY_READ_BUF_SIZE   8192
#define ECHO   (void) fwrite( utap_text, utap_leng, 1, utap_out )
#define YY_INPUT(buf, result, max_size)
#define yyterminate()   return YY_NULL
#define YY_START_STACK_INCR   25
#define YY_BREAK   break;
#define YY_RULE_SETUP   YY_USER_ACTION
#define YY_EXIT_FAILURE   2
#define yyless(n)
#define YYTABLES_NAME   "yytables"

Typedefs

typedef signed char flex_int8_t
typedef short int flex_int16_t
typedef int flex_int32_t
typedef unsigned char flex_uint8_t
typedef unsigned short int flex_uint16_t
typedef unsigned int flex_uint32_t
typedef yy_buffer_state * YY_BUFFER_STATE
typedef unsigned int yy_size_t
typedef unsigned char YY_CHAR
typedef int yy_state_type

Functions

void utap_restart (FILE *input_file)
void utap__switch_to_buffer (YY_BUFFER_STATE new_buffer)
YY_BUFFER_STATE utap__create_buffer (FILE *file, int size)
void utap__delete_buffer (YY_BUFFER_STATE b)
void utap__flush_buffer (YY_BUFFER_STATE b)
 Discard all buffered characters.

void utap_push_buffer_state (YY_BUFFER_STATE new_buffer)
 Pushes the new state onto the stack.

void utap_pop_buffer_state (void)
 Removes and deletes the top of the stack, if present.

void utap_ensure_buffer_stack (void)
void utap__load_buffer_state (void)
void utap__init_buffer (YY_BUFFER_STATE b, FILE *file)
YY_BUFFER_STATE utap__scan_buffer (char *base, yy_size_t size)
 Setup the input buffer state to scan directly from a user-specified character buffer.

YY_BUFFER_STATE utap__scan_string (yyconst char *yy_str)
 Setup the input buffer state to scan a string.

YY_BUFFER_STATE utap__scan_bytes (yyconst char *bytes, int len)
 Setup the input buffer state to scan the given bytes.

void * utap_alloc (yy_size_t)
void * utap_realloc (void *, yy_size_t)
void utap_free (void *)
yy_state_type yy_get_previous_state (void)
yy_state_type yy_try_NUL_trans (yy_state_type current_state)
int yy_get_next_buffer (void)
void yy_fatal_error (yyconst char msg[])
int utap_wrap (void)
int input (void)
void yy_fatal_error (yyconst char *msg)
int utap_get_lineno (void)
 Get the current line number.

FILE * utap_get_in (void)
 Get the input stream.

FILE * utap_get_out (void)
 Get the output stream.

int utap_get_leng (void)
 Get the length of the current token.

char * utap_get_text (void)
 Get the current token.

void utap_set_lineno (int line_number)
 Set the current line number.

void utap_set_in (FILE *in_str)
 Set the input stream.

void utap_set_out (FILE *out_str)
int utap_get_debug (void)
void utap_set_debug (int bdebug)
int utap_lex_destroy (void)
ostream & operator<< (ostream &out, const YYLTYPE &l)

Variables

int utap_leng
FILE * utap_in = (FILE *) 0 *utap_out = (FILE *) 0
FILE * utap_out
size_t yy_buffer_stack_top = 0
 index of top of stack

size_t yy_buffer_stack_max = 0
 capacity of stack

YY_BUFFER_STATEyy_buffer_stack = 0
 Stack as an array.

char yy_hold_char
int yy_n_chars
char * yy_c_buf_p = (char *) 0
int yy_init = 1
int yy_start = 0
int yy_did_buffer_switch_on_eof
int utap_lineno = 1
char * utap_text
yyconst flex_int16_t yy_accept [93]
yyconst flex_int32_t yy_ec [256]
yyconst flex_int32_t yy_meta [35]
yyconst flex_int16_t yy_base [97]
yyconst flex_int16_t yy_def [97]
yyconst flex_int16_t yy_nxt [147]
yyconst flex_int16_t yy_chk [147]
yy_state_type yy_last_accepting_state
char * yy_last_accepting_cpos
int utap__flex_debug = 0

Define Documentation

#define BEGIN   (yy_start) = 1 + 2 *
 

#define comment   1
 

#define ECHO   (void) fwrite( utap_text, utap_leng, 1, utap_out )
 

#define EOB_ACT_CONTINUE_SCAN   0
 

#define EOB_ACT_END_OF_FILE   1
 

#define EOB_ACT_LAST_MATCH   2
 

#define FLEX_BETA
 

#define FLEX_SCANNER
 

#define INITIAL   0
 

#define INT16_MAX   (32767)
 

#define INT16_MIN   (-32767-1)
 

#define INT32_MAX   (2147483647)
 

#define INT32_MIN   (-2147483647-1)
 

#define INT8_MAX   (127)
 

#define INT8_MIN   (-128)
 

#define REJECT   reject_used_but_not_detected
 

#define UINT16_MAX   (65535U)
 

#define UINT32_MAX   (4294967295U)
 

#define UINT8_MAX   (255U)
 

#define unput  )     yyunput( c, (yytext_ptr) )
 

 
#define YY_AT_BOL  )     (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 

#define YY_BREAK   break;
 

#define YY_BUF_SIZE   16384
 

#define YY_BUFFER_EOF_PENDING   2
 

#define YY_BUFFER_NEW   0
 

#define YY_BUFFER_NORMAL   1
 

#define YY_CURRENT_BUFFER
 

Value:

( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL)

#define YY_CURRENT_BUFFER_LVALUE   (yy_buffer_stack)[(yy_buffer_stack_top)]
 

#define YY_DECL   int lexer_flex(void)
 

#define YY_DO_BEFORE_ACTION
 

Value:

(yytext_ptr) = yy_bp; \ utap_leng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp;

#define YY_END_OF_BUFFER   70
 

#define YY_END_OF_BUFFER_CHAR   0
 

#define YY_EXIT_FAILURE   2
 

#define YY_EXTRA_TYPE   void *
 

#define YY_FATAL_ERROR msg   )     { throw TypeException(msg); }
 

#define YY_FLEX_MAJOR_VERSION   2
 

#define YY_FLEX_MINOR_VERSION   5
 

#define YY_FLEX_SUBMINOR_VERSION   31
 

#define YY_FLUSH_BUFFER   utap__flush_buffer(YY_CURRENT_BUFFER )
 

#define YY_INPUT buf,
result,
max_size   ) 
 

Value:

if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ size_t n; \ for ( n = 0; n < max_size && \ (c = getc( utap_in )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( utap_in ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, utap_in))==0 && ferror(utap_in)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(utap_in); \ } \ }\ \

#define YY_INT_ALIGNED   short int
 

#define YY_LESS_LINENO  ) 
 

#define YY_MORE_ADJ   0
 

#define yy_new_buffer   utap__create_buffer
 

#define YY_NEW_FILE   utap_restart(utap_in )
 

#define YY_NULL   0
 

#define YY_NUM_RULES   69
 

#define YY_READ_BUF_SIZE   8192
 

#define YY_RESTORE_YY_MORE_OFFSET
 

#define YY_RULE_SETUP   YY_USER_ACTION
 

#define YY_SC_TO_UI  )     ((unsigned int) (unsigned char) c)
 

#define yy_set_bol at_bol   ) 
 

Value:

{ \ if ( ! YY_CURRENT_BUFFER ){\ utap_ensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ utap__create_buffer(utap_in,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ }

#define yy_set_interactive is_interactive   ) 
 

Value:

{ \ if ( ! YY_CURRENT_BUFFER ){ \ utap_ensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ utap__create_buffer(utap_in,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ }

#define YY_START   (((yy_start) - 1) / 2)
 

#define YY_START_STACK_INCR   25
 

#define YY_STATE_EOF state   )     (YY_END_OF_BUFFER + state + 1)
 

#define YY_USER_ACTION   yylloc.step(); yylloc.last_column+=utap_leng;
 

#define YY_USER_INIT   yylloc.reset();
 

Location tracking inside scanner, taken from http://www.lrde.epita.fr/people/akim/compil/gnuprog2/Advanced-Use-of-Flex.html.

#define yyconst
 

#define yyless  ) 
 

Value:

do \ { \ /* Undo effects of setting up utap_text. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ utap_text[utap_leng] = (yy_hold_char); \ (yy_c_buf_p) = utap_text + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ utap_leng = yyless_macro_arg; \ } \ while ( 0 )

#define yyless  ) 
 

Value:

do \ { \ /* Undo effects of setting up utap_text. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up utap_text again */ \ } \ while ( 0 )

 
#define yymore  )     yymore_used_but_not_detected
 

#define YYSTATE   YY_START
 

#define YYTABLES_NAME   "yytables"
 

 
#define yyterminate  )     return YY_NULL
 

#define yytext_ptr   utap_text
 


Typedef Documentation

typedef short int flex_int16_t
 

typedef int flex_int32_t
 

typedef signed char flex_int8_t
 

typedef unsigned short int flex_uint16_t
 

typedef unsigned int flex_uint32_t
 

typedef unsigned char flex_uint8_t
 

typedef struct yy_buffer_state* YY_BUFFER_STATE
 

typedef unsigned char YY_CHAR
 

typedef unsigned int yy_size_t
 

typedef int yy_state_type
 


Function Documentation

int input void   )  [static]
 

ostream& operator<< ostream &  out,
const YYLTYPE &  l
 

YY_BUFFER_STATE utap__create_buffer FILE *  file,
int  size
 

void utap__delete_buffer YY_BUFFER_STATE  b  ) 
 

void utap__flush_buffer YY_BUFFER_STATE  b  ) 
 

Discard all buffered characters.

On the next scan, YY_INPUT will be called.

Parameters:
b the buffer state to be flushed, usually YY_CURRENT_BUFFER.

void utap__init_buffer YY_BUFFER_STATE  b,
FILE *  file
[static]
 

void utap__load_buffer_state void   )  [static]
 

YY_BUFFER_STATE utap__scan_buffer char *  base,
yy_size_t  size
 

Setup the input buffer state to scan directly from a user-specified character buffer.

Parameters:
base the character buffer
size the size in bytes of the character buffer
Returns:
the newly allocated buffer state object.

YY_BUFFER_STATE utap__scan_bytes yyconst char *  bytes,
int  len
 

Setup the input buffer state to scan the given bytes.

The next call to utap_lex() will scan from a copy of bytes.

Parameters:
bytes the byte buffer to scan
len the number of bytes in the buffer pointed to by bytes.
Returns:
the newly allocated buffer state object.

YY_BUFFER_STATE utap__scan_string yyconst char *  yy_str  ) 
 

Setup the input buffer state to scan a string.

The next call to utap_lex() will scan from a copy of str.

Parameters:
str a NUL-terminated string to scan
Returns:
the newly allocated buffer state object.
Note:
If you want to scan bytes that may contain NUL values, then use utap__scan_bytes() instead.

void utap__switch_to_buffer YY_BUFFER_STATE  new_buffer  ) 
 

void * utap_alloc yy_size_t   ) 
 

void utap_ensure_buffer_stack void   )  [static]
 

void utap_free void *   ) 
 

int utap_get_debug void   ) 
 

FILE* utap_get_in void   ) 
 

Get the input stream.

int utap_get_leng void   ) 
 

Get the length of the current token.

int utap_get_lineno void   ) 
 

Get the current line number.

FILE* utap_get_out void   ) 
 

Get the output stream.

char* utap_get_text void   ) 
 

Get the current token.

int utap_lex_destroy void   ) 
 

void utap_pop_buffer_state void   ) 
 

Removes and deletes the top of the stack, if present.

The next element becomes the new top.

void utap_push_buffer_state YY_BUFFER_STATE  new_buffer  ) 
 

Pushes the new state onto the stack.

The new state becomes the current state. This function will allocate the stack if necessary.

Parameters:
new_buffer The new state.

void * utap_realloc void *  ,
yy_size_t 
 

void utap_restart FILE *  input_file  ) 
 

void utap_set_debug int  bdebug  ) 
 

void utap_set_in FILE *  in_str  ) 
 

Set the input stream.

This does not discard the current input buffer.

Parameters:
in_str A readable stream.
See also:
utap__switch_to_buffer

void utap_set_lineno int  line_number  ) 
 

Set the current line number.

Parameters:
line_number 

void utap_set_out FILE *  out_str  ) 
 

int utap_wrap void   ) 
 

void yy_fatal_error yyconst char *  msg  )  [static]
 

void yy_fatal_error yyconst char  msg[]  )  [static]
 

int yy_get_next_buffer void   )  [static]
 

yy_state_type yy_get_previous_state void   )  [static]
 

yy_state_type yy_try_NUL_trans yy_state_type  current_state  )  [static]
 


Variable Documentation

int utap__flex_debug = 0
 

FILE * utap_in = (FILE *) 0 *utap_out = (FILE *) 0
 

int utap_leng
 

int utap_lineno = 1
 

FILE * utap_out
 

char * utap_text
 

yyconst flex_int16_t yy_accept[93] [static]
 

Initial value:

{ 0, 0, 0, 0, 0, 70, 68, 7, 9, 68, 23, 43, 45, 22, 19, 20, 41, 39, 12, 40, 11, 42, 67, 14, 13, 53, 25, 56, 21, 66, 66, 66, 17, 68, 18, 46, 15, 44, 16, 4, 1, 4, 4, 7, 9, 10, 58, 31, 50, 33, 29, 59, 27, 60, 28, 24, 8, 6, 30, 67, 26, 47, 51, 37, 52, 57, 55, 54, 48, 38, 66, 0, 0, 0, 0, 0, 5, 34, 32, 49, 2, 3, 0, 65, 6, 35, 36, 61, 62, 63, 64, 3, 0 }

yyconst flex_int16_t yy_base[97] [static]
 

Initial value:

{ 0, 0, 0, 32, 33, 111, 112, 108, 106, 105, 85, 84, 29, 112, 112, 112, 83, 25, 112, 31, 112, 40, 86, 81, 112, 18, 37, 41, 112, 20, 49, 40, 112, 67, 112, 80, 112, 44, 112, 112, 112, 83, 80, 87, 85, 83, 112, 112, 112, 112, 112, 112, 112, 63, 112, 112, 112, 0, 112, 67, 112, 62, 112, 112, 112, 112, 112, 112, 60, 112, 65, 58, 50, 56, 48, 70, 112, 112, 112, 112, 112, 0, 53, 112, 0, 112, 112, 112, 112, 112, 112, 0, 112, 92, 40, 95, 98 }

YY_BUFFER_STATE* yy_buffer_stack = 0 [static]
 

Stack as an array.

size_t yy_buffer_stack_max = 0 [static]
 

capacity of stack

size_t yy_buffer_stack_top = 0 [static]
 

index of top of stack

char* yy_c_buf_p = (char *) 0 [static]
 

yyconst flex_int16_t yy_chk[147] [static]
 

Initial value:

{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 12, 17, 25, 25, 29, 25, 94, 3, 4, 19, 17, 29, 3, 4, 12, 21, 19, 19, 30, 82, 21, 26, 26, 26, 31, 21, 27, 27, 27, 37, 30, 31, 33, 33, 70, 75, 75, 30, 30, 30, 37, 74, 73, 72, 71, 68, 70, 61, 59, 53, 45, 44, 43, 70, 70, 70, 93, 93, 93, 95, 42, 95, 96, 41, 96, 35, 23, 22, 16, 11, 10, 9, 8, 7, 5, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92 }

yyconst flex_int16_t yy_def[97] [static]
 

Initial value:

{ 0, 92, 1, 93, 93, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 94, 92, 94, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 95, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 96, 92, 92, 95, 92, 92, 92, 92, 92, 92, 96, 0, 92, 92, 92, 92 }

int yy_did_buffer_switch_on_eof [static]
 

yyconst flex_int32_t yy_ec[256] [static]
 

char yy_hold_char [static]
 

int yy_init = 1 [static]
 

char* yy_last_accepting_cpos [static]
 

yy_state_type yy_last_accepting_state [static]
 

yyconst flex_int32_t yy_meta[35] [static]
 

Initial value:

{ 0, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 1, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1 }

int yy_n_chars [static]
 

yyconst flex_int16_t yy_nxt[147] [static]
 

Initial value:

{ 0, 6, 7, 8, 9, 10, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 40, 48, 51, 61, 62, 71, 63, 70, 41, 41, 53, 52, 72, 42, 42, 49, 56, 54, 55, 70, 45, 57, 64, 65, 66, 73, 58, 67, 68, 69, 78, 70, 74, 75, 76, 70, 75, 76, 70, 70, 70, 79, 90, 89, 88, 87, 86, 70, 85, 59, 83, 82, 44, 43, 70, 70, 70, 39, 39, 39, 84, 81, 84, 91, 80, 91, 77, 60, 59, 50, 47, 46, 45, 44, 43, 92, 5, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92 }

int yy_start = 0 [static]
 


Generated on Sat May 15 12:33:41 2004 for libutap by doxygen 1.3.7