diff options
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]; } |