* apparently no one is using hex values in olsrd.conf as the HEXDIGIT
authorBernd Petrovitsch <bernd@firmix.at>
Thu, 4 Oct 2007 23:06:10 +0000 (23:06 +0000)
committerBernd Petrovitsch <bernd@firmix.at>
Thu, 4 Oct 2007 23:06:10 +0000 (23:06 +0000)
  reg-exp was totally broken.
  fixed  it. And renamed it to HEX8
* renamed HEXBYTE to HEX16 as IPv6 actually has 16bit values there (and
  byte is misleading)
* rearranged the regexps to look more similar. Since flex (and lex) generate
  DEAs out of it, it doesn't make a difference.
* use "size_t".
* use more options: I don't know if that breaks on *BSD.

src/cfgparser/oscan.lex

index 3639cd7..8310f20 100644 (file)
@@ -38,7 +38,7 @@
  * to the project. For more information see the website or contact
  * the copyright holders.
  *
- * $Id: oscan.lex,v 1.25 2007/09/13 16:08:13 bernd67 Exp $
+ * $Id: oscan.lex,v 1.26 2007/10/04 23:06:10 bernd67 Exp $
  */
 
 
@@ -71,7 +71,7 @@ int yylex_destroy(void);
 int yylex(void);
 
 static struct conf_token *get_conf_token(void);
-static struct conf_token *get_string_token(const char * const s, int const n);
+static struct conf_token *get_string_token(const char * const s, const size_t n);
 static struct conf_token *get_integer_token(const char * const s);
 static struct conf_token *get_floating_token(const char * const s);
 static struct conf_token *get_boolean_token(const olsr_bool b);
@@ -85,7 +85,7 @@ static struct conf_token *get_conf_token(void)
     return t;
 }
 
-static struct conf_token *get_string_token(const char * const s, int const n)
+static struct conf_token *get_string_token(const char * const s, const size_t n)
 {
     struct conf_token *rv = get_conf_token();
     if (rv != NULL) {
@@ -130,24 +130,29 @@ static struct conf_token *get_boolean_token(const olsr_bool b)
 
 %}
 
+%option never-interactive
+%option noalways-interactive
+%option nomain
+%option nostack
 %option noyywrap
 
 DECDIGIT [0-9]
 FLOAT {DECDIGIT}+\.{DECDIGIT}+
-HEXDIGIT [a-f][A-F][0-9]
+HEX8 [a-fA-F0-9]
+QUAD {DECDIGIT}{1,3}
 
-IPV4ADDR ({DECDIGIT}){1,3}\.({DECDIGIT}){1,3}\.({DECDIGIT}){1,3}\.({DECDIGIT}){1,3}
+IPV4ADDR {QUAD}\.{QUAD}\.{QUAD}\.{QUAD}
 
-HEXBYTE ([a-f]|[A-F]|[0-9]){1,4}
+HEX16 {HEX8}{1,4}
 
-IP6PAT1 ({HEXBYTE}:){7}{HEXBYTE}
-IP6PAT2 {HEXBYTE}::({HEXBYTE}:){0,5}{HEXBYTE}
-IP6PAT3 ({HEXBYTE}:){2}:({HEXBYTE}:){0,4}{HEXBYTE}
-IP6PAT4 ({HEXBYTE}:){3}:({HEXBYTE}:){0,3}{HEXBYTE}
-IP6PAT5 ({HEXBYTE}:){4}:({HEXBYTE}:){0,2}{HEXBYTE}
-IP6PAT6 ({HEXBYTE}:){5}:({HEXBYTE}:){0,1}{HEXBYTE}
-IP6PAT7 ({HEXBYTE}:){6}:{HEXBYTE}
-IP6PAT8 ({HEXBYTE}:){1,7}:
+IP6PAT2 ({HEX16}:){1}:({HEX16}:){0,5}{HEX16}
+IP6PAT3 ({HEX16}:){2}:({HEX16}:){0,4}{HEX16}
+IP6PAT4 ({HEX16}:){3}:({HEX16}:){0,3}{HEX16}
+IP6PAT5 ({HEX16}:){4}:({HEX16}:){0,2}{HEX16}
+IP6PAT6 ({HEX16}:){5}:({HEX16}:){0,1}{HEX16}
+IP6PAT7 ({HEX16}:){6}:({HEX16})
+IP6PAT1 ({HEX16}:){7}{HEX16}
+IP6PAT8 ({HEX16}:){1,7}:
 IP6PAT9 ::
 
 IPV6ADDR {IP6PAT1}|{IP6PAT2}|{IP6PAT3}|{IP6PAT4}|{IP6PAT5}|{IP6PAT6}|{IP6PAT7}|{IP6PAT8}|{IP6PAT9}
@@ -177,7 +182,7 @@ IPV6ADDR {IP6PAT1}|{IP6PAT2}|{IP6PAT3}|{IP6PAT4}|{IP6PAT5}|{IP6PAT6}|{IP6PAT7}|{
     return TOK_STRING;
 }
 
-0x{HEXDIGIT}+ {
+0x{HEX8}+ {
     yylval = get_integer_token(yytext);
     return TOK_INTEGER;
 }