use %016llx when printing dpids
[actl.git] / lex.l
blob9aa35c5e81feff6a5732764cf93e0309392e5b6b
1 /*
2  * Copyright (c) 2016 Mohamed Aslan <maslan@sce.carleton.ca>
3  *
4  * Permission to use, copy, modify, and distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
18 #include <stdio.h>
19 #include "y.tab.h"
21 extern int yyerror(const char *fmt, ...);
24 %option yylineno
25 %option noyywrap
26 %option noinput
27 %option nounput
29 %x dquotes
33 id                              { return ID; }
34 listen                          { return LISTEN; }
35 on                              { return ON; }
36 controller                      { return CONTROLLER; }
37 ip                              { return IP; }
38 port                            { return PORT; }
39 replicas                        { return REPLICAS; }
40 openflow                        { return OPENFLOW; }
41 version                         { return VERSION; }
42 application                     { return APPLICATION; }
43 adapt                           { return ADAPT; }
44 every                           { return EVERY; }
45 learn                           { return LEARN; }
46 for                             { return FOR; }
47 sec                             { return SEC; }
48 min                             { return MIN; }
49 log                             { return LOG; }
50 to                              { return TO; }
51 topology                        { return TOPOLOGY; }
52 host                            { return HOST; }
53 at                              { return AT; }
54 dpid                            { return DPID; }
56 yes                             { yylval.i = 1; return BOOL; }
57 no                              { yylval.i = 0; return BOOL; }
59 ,                               { return COMMA; }
61 \{                              { return LCBRACKET;}
62 \}                              { return RCBRACKET;}
64 [0-9]+                          { yylval.i = atoi(yytext); return NUMBER; }
65 0x[0-9a-fA-F]+                  { return NUMBER; }
67 \"                              { BEGIN(dquotes); }
68 <dquotes>[^\"]*\"               {
69                                         yylval.s = strndup(yytext, yyleng - 1);
70                                         BEGIN(INITIAL);
71                                         return STRING;
72                                 }
74 [\_a-zA-Z][\_a-zA-Z0-9]*        { yylval.s = strdup(yytext); return VAR; }
76 [ \t\n]                         { ; }
77 \#.*\n                          { ; }
78 .                               { yyerror("error: invalid character: %s", yytext); }