convert kmeans_incr threshold
[actl.git] / lex.l
blobdc5a009f8ee87d8e7d788f43c86f3c09cc92a7ef
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 peers                           { return PEERS; }
37 controller                      { return CONTROLLER; }
38 ip                              { return IP; }
39 port                            { return PORT; }
40 replicas                        { return REPLICAS; }
41 openflow                        { return OPENFLOW; }
42 version                         { return VERSION; }
43 application                     { return APPLICATION; }
44 adapt                           { return ADAPT; }
45 every                           { return EVERY; }
46 learn                           { return LEARN; }
47 using                           { return USING; }
48 kmeans_seq                      { return KMEANSSEQ; }
49 kmeans_incr                     { return KMEANSINCR; }
50 with                            { return WITH; }
51 clusters                        { return CLUSTERS; }
52 threshold                       { return THRESHOLD; }
53 for                             { return FOR; }
54 sec                             { return SEC; }
55 min                             { return MIN; }
56 log                             { return LOG; }
57 to                              { return TO; }
58 topology                        { return TOPOLOGY; }
59 host                            { return HOST; }
60 at                              { return AT; }
61 dpid                            { return DPID; }
63 yes                             { yylval.i = 1; return BOOL; }
64 no                              { yylval.i = 0; return BOOL; }
66 ,                               { return COMMA; }
68 \{                              { return LCBRACKET;}
69 \}                              { return RCBRACKET;}
71 =                               { return EQUAL; }
73 [0-9]+                          { yylval.i = atoi(yytext); return NUMBER; }
74 0x[0-9a-fA-F]+                  { return NUMBER; }
76 \"                              { BEGIN(dquotes); }
77 <dquotes>[^\"]*\"               {
78                                         yylval.s = strndup(yytext, yyleng - 1);
79                                         BEGIN(INITIAL);
80                                         return STRING;
81                                 }
83 [\_a-zA-Z][\_a-zA-Z0-9]*        { yylval.s = strdup(yytext); return VAR; }
85 [ \t\n]                         { ; }
86 \#.*\n                          { ; }
87 .                               { yyerror("error: invalid character: %s", yytext); }