]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Define symbols as text between ''.
authorOndrej Filip <feela@majklik.network.cz>
Wed, 10 Feb 2010 11:30:14 +0000 (12:30 +0100)
committerOndrej Filip <feela@majklik.network.cz>
Wed, 10 Feb 2010 11:30:14 +0000 (12:30 +0100)
conf/cf-lex.l
doc/bird.conf.example
filter/test.conf

index c68a42e4dc074f46be23db2e349a9ee6f44d3670..04b0c6040c1cbf2a653066e3de6b910a4e0e4656 100644 (file)
@@ -131,7 +131,11 @@ WHITE [ \t]
   return NUM;
 }
 
-{ALPHA}{ALNUM}* {
+({ALPHA}{ALNUM}*|[']({ALNUM}|[-])*[']) {
+  if(*yytext == '\'') {
+    yytext[yyleng-1] = 0;
+    yytext++;
+  }
   unsigned int h = cf_hash(yytext);
   struct keyword *k = kw_hash[h & (KW_HASH_SIZE-1)];
   while (k)
index 6ab03a23f7ef27480c2e4213652e242df69ae4b7..51b2c0ecfb62d75f31e62df255757e43688e246a 100644 (file)
@@ -13,7 +13,8 @@
 #router id 62.168.0.1;
 
 # You can define your own symbols...
-#define xyzzy = 120+10;
+#define xyzzy = (120+10);
+#define '1a-a1' = (30+40);
 
 # Define a route filter...
 filter test_filter {
index 2e82863314383b1c1962a253b310b2f489cd4adb..fb35afbeaf9e0ee5ad50f6adcb764c7ff18e1cec 100644 (file)
@@ -8,9 +8,10 @@
 router id 62.168.0.1;
 
 define xyzzy = (120+10);
+define '1a-a1' = (20+10);
 
 
-function mkpair(int a)
+function 'mkpair-a'(int a)
 {
        return (1, a);
 }
@@ -132,7 +133,8 @@ pair pp;
 int set is;
 prefix set pxs;
 string s;
-{ 
+{
+       print "1a-a1 = 30: ", '1a-a1'; 
        print "Testing filter language:";
        i = four; 
        i = 12*100 + 60/2 + i; 
@@ -149,9 +151,9 @@ string s;
        is = [ 2, 3, 4, 7..11 ];
        print "  must be true: ", 1.2.0.0/16 ~ [ 1.0.0.0/8{ 15 , 17 } ];
        print "  data types; must be true: ", 1.2.3.4 = 1.2.3.4, ",", 1 ~ [1,2,3], ",", 5 ~ [1..20], ",", 10 ~ is, ",", 2 ~ [ 1, 2, 3 ], ",", 5 ~ [ 4 .. 7 ], ",", 1.2.3.4 ~ [ 1.2.3.3..1.2.3.5 ], ",", 1.2.3.4 ~ 1.0.0.0/8, ",", 1.0.0.0/8 ~ 1.0.0.0/8, ",", 1.0.0.0/8 ~ [ 1.0.0.0/8+ ];
-       print "  must be true: ", true && true, ",", true || false, ",", ! false && ! false && true, ",", 1 < 2 && 1 != 3;
+       print "  must be true: ", true && true, ",", true || false, ",", ! false && ! false && true, ",", 1 < 2 && 1 != 3, ",", true && true && ! false;
 
-#      print "  must be true: ", defined(1), ",", defined(1.2.3.4), ",", 1 != 2, ",", 1 <= 2;
+       print "  must be true: ", defined(1), ",", defined(1.2.3.4), ",", 1 != 2, ",", 1 <= 2;
        print "  data types: must be false: ", 1 ~ [ 2, 3, 4 ], ",", 5 ~ is, ",", 1.2.3.4 ~ [ 1.2.3.3, 1.2.3.5 ], ",", (1,2) > (2,2), ",", (1,1) > (1,1), ",", 1.0.0.0/9 ~ [ 1.0.0.0/8- ], ",", 1.2.0.0/17 ~ [ 1.0.0.0/8{ 15 , 16 } ], ",", true && false;
 
        px = 1.2.0.0/18;
@@ -163,7 +165,7 @@ string s;
        print "Testing mask : 127.0.0.0 = ", p.mask(8);
        
        pp = (1, 2);
-       print "Testing pairs: (1,2) = ", (1,2), " = ", pp, " = ", (1,1+1), " = ", mkpair(2);
+       print "Testing pairs: (1,2) = ", (1,2), " = ", pp, " = ", (1,1+1), " = ", 'mkpair-a'(2);
        print "  must be true:  ", (1,2) = (1,1+1);
        print "Testing enums: ", RTS_DUMMY, " ", RTS_STATIC;