I've included a test case here for what I am trying to do- help much
appreciated. How can I get it to not barf on recursively nested
expressions? The expected output here would be "b = 1 + 2 + 3;".
-Dan
** operator.c:
#define oper_add(__a, __b) ((__a) + (__b))
int main(int argc, char *argv[])
{
int a, b;
// this works...
a = oper_add(2, 3);
// but this doesn't.
b = oper_add(1, oper_add(2, 3));
return(0);
}
** operator.cocci:
@ oper_add @
expression a, b;
@@
- oper_add(a, b)
+ a + b
** output:
$ spatch -sp_file operator.cocci operator.c
init_defs_builtins: /usr/share/coccinelle/standard.h
HANDLING: operator.c
previous modification:
MINUS
According to environment 2:
oper_add.b -> 3
oper_add.a -> 2
current modification:
MINUS
According to environment 2:
oper_add.b -> oper_add(2, 3)
oper_add.a -> 1
Fatal error: exception Failure("oper_add: already tagged token:
C code context
File "operator.c", line 9, column 26, charpos = 179
around = '2', whole content = b = oper_add(1, oper_add(2, 3));")
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)