Define symbols as text between ''.

This commit is contained in:
Ondrej Filip 2010-02-10 12:30:14 +01:00
parent c27b2449d1
commit 0efd646278
3 changed files with 14 additions and 7 deletions

View file

@ -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)

View file

@ -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 {

View file

@ -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;