trafgen: lexer/parser: fix cpu() selection and whitespacing
authorDaniel Borkmann <dborkman@redhat.com>
Mon, 25 Mar 2013 19:21:15 +0000 (25 20:21 +0100)
committerDaniel Borkmann <dborkman@redhat.com>
Mon, 25 Mar 2013 19:21:15 +0000 (25 20:21 +0100)
It looks unintuitive when once needs to write cpu(0:3), so also allow
cpu(0-3). Then it's quite stupid to enforce whitespace after the double
colon before the curley braces open. So make this rather optional here.

Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
trafgen_lexer.l
trafgen_parser.y

index 72bd56c..be6917f 100644 (file)
@@ -72,7 +72,7 @@ static char *try_convert_shellcode(char *sstr)
 number_oct     ([0][0-9]+)
 number_hex     ([0][x][a-fA-F0-9]+)
 number_bin     ([0][b][0-1]+)
-number_dec     (([0])|([-+]?[1-9][0-9]*))
+number_dec     (([0])|([1-9][0-9]*))
 number_ascii   ([a-zA-Z])
 
 %%
@@ -120,7 +120,7 @@ number_ascii        ([a-zA-Z])
 "\""[^\"]+"\"" { yylval.str = try_convert_shellcode(xstrdup(yytext));
                  return string; }
 
-([ \t\r\n]+)?  { return K_WHITE; }
+([ \t\n]+)?    { return K_WHITE; }
 
 "/*"([^\*]|\*[^/])*"*/" { return K_COMMENT; }
 
index 9d2dd09..b0e7e33 100644 (file)
@@ -344,12 +344,22 @@ inline_comment
        : K_COMMENT { }
        ;
 
+cpu_delim
+       : ':' { }
+       | '-' { }
+       ;
+
+noenforce_white
+       : { }
+       | K_WHITE { }
+       ;
+
 packet
        : '{' delimiter payload delimiter '}' {
                        min_cpu = max_cpu = -1;
                        realloc_packet();
                }
-       | K_CPU '(' number ':' number ')' ':' K_WHITE '{' delimiter payload delimiter '}' {
+       | K_CPU '(' number cpu_delim number ')' ':' noenforce_white '{' delimiter payload delimiter '}' {
                        min_cpu = $3;
                        max_cpu = $5;
 
@@ -362,7 +372,7 @@ packet
 
                        realloc_packet();
                }
-       | K_CPU '(' number ')' ':' K_WHITE '{' delimiter payload delimiter '}' {
+       | K_CPU '(' number ')' ':' noenforce_white '{' delimiter payload delimiter '}' {
                        min_cpu = max_cpu = $3;
                        realloc_packet();
                }