diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-07-28 22:12:35 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2013-07-28 22:12:35 +0200 |
commit | 37c21678743c752cbbc2297871c47a3117303309 (patch) | |
tree | 6ff34969c1fb744af18ee3708be48c529b88bf2d /mmss/config.l | |
parent | a713d2931ebd26bd2bc1b6c1cce574940736e718 (diff) | |
download | gmrf-37c21678743c752cbbc2297871c47a3117303309.tar gmrf-37c21678743c752cbbc2297871c47a3117303309.zip |
Implement config parser
Diffstat (limited to 'mmss/config.l')
-rw-r--r-- | mmss/config.l | 19 |
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]; } |