Define symbols as text between ''.
This commit is contained in:
parent
c27b2449d1
commit
0efd646278
3 changed files with 14 additions and 7 deletions
|
@ -131,7 +131,11 @@ WHITE [ \t]
|
||||||
return NUM;
|
return NUM;
|
||||||
}
|
}
|
||||||
|
|
||||||
{ALPHA}{ALNUM}* {
|
({ALPHA}{ALNUM}*|[']({ALNUM}|[-])*[']) {
|
||||||
|
if(*yytext == '\'') {
|
||||||
|
yytext[yyleng-1] = 0;
|
||||||
|
yytext++;
|
||||||
|
}
|
||||||
unsigned int h = cf_hash(yytext);
|
unsigned int h = cf_hash(yytext);
|
||||||
struct keyword *k = kw_hash[h & (KW_HASH_SIZE-1)];
|
struct keyword *k = kw_hash[h & (KW_HASH_SIZE-1)];
|
||||||
while (k)
|
while (k)
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
#router id 62.168.0.1;
|
#router id 62.168.0.1;
|
||||||
|
|
||||||
# You can define your own symbols...
|
# You can define your own symbols...
|
||||||
#define xyzzy = 120+10;
|
#define xyzzy = (120+10);
|
||||||
|
#define '1a-a1' = (30+40);
|
||||||
|
|
||||||
# Define a route filter...
|
# Define a route filter...
|
||||||
filter test_filter {
|
filter test_filter {
|
||||||
|
|
|
@ -8,9 +8,10 @@
|
||||||
router id 62.168.0.1;
|
router id 62.168.0.1;
|
||||||
|
|
||||||
define xyzzy = (120+10);
|
define xyzzy = (120+10);
|
||||||
|
define '1a-a1' = (20+10);
|
||||||
|
|
||||||
|
|
||||||
function mkpair(int a)
|
function 'mkpair-a'(int a)
|
||||||
{
|
{
|
||||||
return (1, a);
|
return (1, a);
|
||||||
}
|
}
|
||||||
|
@ -132,7 +133,8 @@ pair pp;
|
||||||
int set is;
|
int set is;
|
||||||
prefix set pxs;
|
prefix set pxs;
|
||||||
string s;
|
string s;
|
||||||
{
|
{
|
||||||
|
print "1a-a1 = 30: ", '1a-a1';
|
||||||
print "Testing filter language:";
|
print "Testing filter language:";
|
||||||
i = four;
|
i = four;
|
||||||
i = 12*100 + 60/2 + i;
|
i = 12*100 + 60/2 + i;
|
||||||
|
@ -149,9 +151,9 @@ string s;
|
||||||
is = [ 2, 3, 4, 7..11 ];
|
is = [ 2, 3, 4, 7..11 ];
|
||||||
print " must be true: ", 1.2.0.0/16 ~ [ 1.0.0.0/8{ 15 , 17 } ];
|
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 " 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;
|
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;
|
px = 1.2.0.0/18;
|
||||||
|
@ -163,7 +165,7 @@ string s;
|
||||||
print "Testing mask : 127.0.0.0 = ", p.mask(8);
|
print "Testing mask : 127.0.0.0 = ", p.mask(8);
|
||||||
|
|
||||||
pp = (1, 2);
|
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 " must be true: ", (1,2) = (1,1+1);
|
||||||
print "Testing enums: ", RTS_DUMMY, " ", RTS_STATIC;
|
print "Testing enums: ", RTS_DUMMY, " ", RTS_STATIC;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue