fixed flex problem in hardcore mode
[lwes.git] / src / lwes_esf_parser.l
blob8ced0ebd6db17ce9952d8a86490015bb1bdbff2d
1 %{
2 /*
3  * This is the lexical analyser for the Event Specification file
4  */
6 #define YYSTYPE const char*
8 #include "lwes_esf_parser.h"
9 #include "lwes_esf_parser_y.h"  /* token codes from the parser */
11 #define YY_NO_UNPUT
13 #undef YY_DECL
14 #define YY_DECL int lweslex( YYSTYPE *lvalp, void *param)
16 /* this fixes a problem in flex where compiling with -Wall fails since
17    the ECHO macro ignores the output of fwrite().  So we assign the output 
18    to a static variable but don't use it so the compile suceeds */
19 static int __lwesfwriteout;
20 #define ECHO _fwout = fwrite( yytext, yyleng, 1, yyout )
22 /* function prototypes */
23 int lweslex(YYSTYPE *lvalp, void *param);
24 void lweslexdestroy (void);
26 void
27 lweslexdestroy
28   (void)
30 /* FIXME: This doesn't work with multiple parsers, I think I need to
31    experiment with reentrancy */
32   lwes_delete_buffer (YY_CURRENT_BUFFER);
38 %option noyywrap
42 \n              { ((struct lwes_parser_state *) param)->lineno++; }
43 uint16          { 
44                   *lvalp = (YYSTYPE)lwestext;
45                   return(YY_UINT16);
46                 }
47 int16           {
48                   *lvalp = (YYSTYPE)lwestext;
49                   return(YY_INT16);
50                 }
51 uint32          {
52                   *lvalp = (YYSTYPE)lwestext;
53                   return(YY_UINT32);
54                 }
55 int32           {
56                   *lvalp = (YYSTYPE)lwestext;
57                   return(YY_INT32);
58                 }
59 string          {
60                   *lvalp = (YYSTYPE)lwestext;
61                   return(YY_STRING);
62                 }
63 ip_addr         {
64                   *lvalp = (YYSTYPE)lwestext;
65                   return(YY_IP_ADDR);
66                 }
67 int64           {
68                   *lvalp = (YYSTYPE)lwestext;
69                   return(YY_INT64);
70                 }
71 uint64          {
72                   *lvalp = (YYSTYPE)lwestext;
73                   return(YY_UINT64);
74                 }
75 boolean         {
76                   *lvalp = (YYSTYPE)lwestext;
77                   return(YY_BOOLEAN);
78                 }
79 [a-zA-Z0-9_:]+  {
80                    *lvalp = (YYSTYPE)lwestext;
81                   if (((struct lwes_parser_state *) param)->in_event)
82                     return(ATTRIBUTEWORD);
83                   else
84                     return(EVENTWORD);
85                 }
86 "{"             {
87                   ((struct lwes_parser_state *) param)->in_event = 1;
88                   return '{';
89                 }
90 "}"             {
91                   ((struct lwes_parser_state *) param)->in_event = 0;
92                   return '}';
93                 }
94 ";"             {
95                   return ';';
96                 }
97 "#"[^\n]*       /* eat up one-line comments */
98 .               ;