Mercurial > hg > freeDiameter
changeset 169:f8507f57a3c0
Allow '+' and '-' operators in conf file
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Tue, 02 Feb 2010 10:24:32 +0900 |
parents | 6db078b955e3 |
children | 4b62e4a92828 |
files | extensions/rt_default/rtd_conf.l extensions/rt_default/rtd_conf.y |
diffstat | 2 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/extensions/rt_default/rtd_conf.l Tue Feb 02 10:15:05 2010 +0900 +++ b/extensions/rt_default/rtd_conf.l Tue Feb 02 10:24:32 2010 +0900 @@ -135,7 +135,7 @@ (?i:"rlm") { return REALM; } /* Valid single characters for yyparse */ -[*:=+;] { return yytext[0]; } +[*:=+-;] { return yytext[0]; } /* Unrecognized sequence, if it did not match any previous pattern */ [^[:space:]\"*:=+;\n]+ {
--- a/extensions/rt_default/rtd_conf.y Tue Feb 02 10:15:05 2010 +0900 +++ b/extensions/rt_default/rtd_conf.y Tue Feb 02 10:24:32 2010 +0900 @@ -142,6 +142,7 @@ %type <tstring> TSTRING %type <criteria> CRITERIA %type <target> TARGET +%type <integer> EXPR_INT /* Tokens */ %token OH @@ -164,7 +165,7 @@ ; /* a RULE entry */ -rule: CRITERIA ':' TARGET '+' '=' INTEGER ';' +rule: CRITERIA ':' TARGET '+' '=' EXPR_INT ';' { int flag = 0; if ($1.regex) @@ -255,3 +256,18 @@ $$.type = RTD_TAR_REALM; } ; + + /* An expression that has an integer value; we allow + and - operators cause it is convenient */ +EXPR_INT: INTEGER + { + $$ = $1; + } + | EXPR_INT '+' INTEGER + { + $$ = $1 + $3; + } + | EXPR_INT '-' INTEGER + { + $$ = $1 - $3; + } + ;