summaryrefslogtreecommitdiffstats
path: root/mmss/config.l
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-07-28 22:12:35 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-07-28 22:12:35 +0200
commit37c21678743c752cbbc2297871c47a3117303309 (patch)
tree6ff34969c1fb744af18ee3708be48c529b88bf2d /mmss/config.l
parenta713d2931ebd26bd2bc1b6c1cce574940736e718 (diff)
downloadgmrf-37c21678743c752cbbc2297871c47a3117303309.tar
gmrf-37c21678743c752cbbc2297871c47a3117303309.zip
Implement config parser
Diffstat (limited to 'mmss/config.l')
-rw-r--r--mmss/config.l19
1 files changed, 19 insertions, 0 deletions
diff --git a/mmss/config.l b/mmss/config.l
index f612613..4fdd346 100644
--- a/mmss/config.l
+++ b/mmss/config.l
@@ -36,6 +36,9 @@
%top {
#include <config.yy.hpp>
+
+ #include <cassert>
+ #include <cstdio>
}
%s NEEDSPACE
@@ -59,6 +62,22 @@
yes { TOKEN(TOK_YES); }
no { TOKEN(TOK_NO); }
network { TOKEN(TOK_NETWORK); }
+protocol { TOKEN(TOK_PROTOCOL); }
+node { TOKEN(TOK_NODE); }
+load { TOKEN(TOK_LOAD); }
+default { TOKEN(TOK_DEFAULT); }
+interface { TOKEN(TOK_INTERFACE); }
+address { TOKEN(TOK_ADDRESS); }
+
+([[:xdigit:]]{2}:){7}[[:xdigit:]]{2} {
+ UPDATE_LOCATION;
+
+ assert(std::sscanf(yytext, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
+ &yylval->addr.d[0], &yylval->addr.d[1], &yylval->addr.d[2], &yylval->addr.d[3],
+ &yylval->addr.d[4], &yylval->addr.d[5], &yylval->addr.d[6], &yylval->addr.d[7]) == 8);
+
+ return TOK_GMRF_ADDRESS;
+}
[;:\{\}] { UPDATE_LOCATION; return yytext[0]; }