pktloc_grammar.l 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. %{
  2. #include <netlink-private/netlink.h>
  3. #include <netlink-private/tc.h>
  4. #include <netlink/netlink.h>
  5. #include <netlink/utils.h>
  6. #include <netlink/route/pktloc.h>
  7. #include "pktloc_syntax.h"
  8. %}
  9. %option 8bit
  10. %option reentrant
  11. %option warn
  12. %option noyywrap
  13. %option noinput
  14. %option nounput
  15. %option bison-bridge
  16. %option bison-locations
  17. %option prefix="pktloc_"
  18. %%
  19. [ \t\r\n]+
  20. "#".*
  21. [[:digit:]]+ |
  22. 0[xX][[:xdigit:]]+ {
  23. yylval->i = strtoul(yytext, NULL, 0);
  24. return NUMBER;
  25. }
  26. "+" { return yylval->i = yytext[0]; }
  27. [uU]8 { yylval->i = TCF_EM_ALIGN_U8; return ALIGN; }
  28. [uU]16 { yylval->i = TCF_EM_ALIGN_U16; return ALIGN; }
  29. [uU]32 { yylval->i = TCF_EM_ALIGN_U32; return ALIGN; }
  30. [lL][iI][nN][kK] |
  31. [eE][tT][hH] { yylval->i = TCF_LAYER_LINK; return LAYER; }
  32. [nN][eE][tT] |
  33. [iI][pP] { yylval->i = TCF_LAYER_NETWORK; return LAYER; }
  34. [tT][rR][aA][nN][sS][pP][oO][rR][tT] |
  35. [tT][cC][pP] { yylval->i = TCF_LAYER_TRANSPORT; return LAYER; }
  36. [^ \t\r\n+]+ {
  37. yylval->s = strdup(yytext);
  38. if (yylval->s == NULL)
  39. return ERROR;
  40. return NAME;
  41. }