2 * Copyright 2010, INRIA, University of Copenhagen
3 * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
4 * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
5 * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
6 * This file is part of Coccinelle.
8 * Coccinelle is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, according to version 2 of the License.
12 * Coccinelle is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Coccinelle. If not, see <http://www.gnu.org/licenses/>.
20 * The authors reserve the right to distribute this or future versions of
21 * Coccinelle under other licenses.
26 * Copyright 2010, INRIA, University of Copenhagen
27 * Julia Lawall, Rene Rydhof Hansen, Gilles Muller, Nicolas Palix
28 * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
29 * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
30 * This file is part of Coccinelle.
32 * Coccinelle is free software: you can redistribute it and/or modify
33 * it under the terms of the GNU General Public License as published by
34 * the Free Software Foundation, according to version 2 of the License.
36 * Coccinelle is distributed in the hope that it will be useful,
37 * but WITHOUT ANY WARRANTY; without even the implied warranty of
38 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
39 * GNU General Public License for more details.
41 * You should have received a copy of the GNU General Public License
42 * along with Coccinelle. If not, see <http://www.gnu.org/licenses/>.
44 * The authors reserve the right to distribute this or future versions of
45 * Coccinelle under other licenses.
50 {combiner_ident
: Ast_cocci.ident
-> 'a
;
51 combiner_expression
: Ast_cocci.expression
-> 'a
;
52 combiner_fullType
: Ast_cocci.fullType
-> 'a
;
53 combiner_typeC
: Ast_cocci.typeC
-> 'a
;
54 combiner_declaration
: Ast_cocci.declaration
-> 'a
;
55 combiner_initialiser
: Ast_cocci.initialiser
-> 'a
;
56 combiner_parameter
: Ast_cocci.parameterTypeDef
-> 'a
;
57 combiner_parameter_list
: Ast_cocci.parameter_list
-> 'a
;
58 combiner_rule_elem
: Ast_cocci.rule_elem
-> 'a
;
59 combiner_statement
: Ast_cocci.statement
-> 'a
;
60 combiner_case_line
: Ast_cocci.case_line
-> 'a
;
61 combiner_top_level
: Ast_cocci.top_level
-> 'a
;
62 combiner_anything
: Ast_cocci.anything
-> 'a
;
63 combiner_expression_dots
:
64 Ast_cocci.expression
Ast_cocci.dots
-> 'a
;
65 combiner_statement_dots
:
66 Ast_cocci.statement
Ast_cocci.dots
-> 'a
;
67 combiner_declaration_dots
:
68 Ast_cocci.declaration
Ast_cocci.dots
-> 'a
;
69 combiner_initialiser_dots
:
70 Ast_cocci.initialiser
Ast_cocci.dots
-> 'a
}
72 type ('mc
,'a
) cmcode
= 'a combiner
-> 'mc
Ast_cocci.mcode
-> 'a
73 type ('cd
,'a
) ccode
= 'a combiner
-> ('cd
-> 'a
) -> 'cd
-> 'a
76 ('a
-> 'a
-> 'a
) -> 'a
->
77 ((Ast_cocci.meta_name
,'a
) cmcode
) ->
78 ((string,'a
) cmcode
) ->
79 ((Ast_cocci.constant
,'a
) cmcode
) ->
80 ((Ast_cocci.assignOp
,'a
) cmcode
) ->
81 ((Ast_cocci.fixOp
,'a
) cmcode
) ->
82 ((Ast_cocci.unaryOp
,'a
) cmcode
) ->
83 ((Ast_cocci.binaryOp
,'a
) cmcode
) ->
84 ((Ast_cocci.const_vol
,'a
) cmcode
) ->
85 ((Ast_cocci.sign
,'a
) cmcode
) ->
86 ((Ast_cocci.structUnion
,'a
) cmcode
) ->
87 ((Ast_cocci.storage
,'a
) cmcode
) ->
88 ((Ast_cocci.inc_file
,'a
) cmcode
) ->
89 ((Ast_cocci.expression
Ast_cocci.dots
,'a
) ccode
) ->
90 ((Ast_cocci.parameterTypeDef
Ast_cocci.dots
,'a
) ccode
) ->
91 ((Ast_cocci.statement
Ast_cocci.dots
,'a
) ccode
) ->
92 ((Ast_cocci.declaration
Ast_cocci.dots
,'a
) ccode
) ->
93 ((Ast_cocci.initialiser
Ast_cocci.dots
,'a
) ccode
) ->
94 ((Ast_cocci.ident
,'a
) ccode
) ->
95 ((Ast_cocci.expression
,'a
) ccode
) ->
96 ((Ast_cocci.fullType
,'a
) ccode
) ->
97 ((Ast_cocci.typeC
,'a
) ccode
) ->
98 ((Ast_cocci.initialiser
,'a
) ccode
) ->
99 ((Ast_cocci.parameterTypeDef
,'a
) ccode
) ->
100 ((Ast_cocci.declaration
,'a
) ccode
) ->
101 ((Ast_cocci.rule_elem
,'a
) ccode
) ->
102 ((Ast_cocci.statement
,'a
) ccode
) ->
103 ((Ast_cocci.case_line
,'a
) ccode
) ->
104 ((Ast_cocci.top_level
,'a
) ccode
) ->
105 ((Ast_cocci.anything
,'a
) ccode
) ->
108 type 'a inout
= 'a
-> 'a
(* for specifying the type of rebuilder *)
111 {rebuilder_ident
: Ast_cocci.ident inout
;
112 rebuilder_expression
: Ast_cocci.expression inout
;
113 rebuilder_fullType
: Ast_cocci.fullType inout
;
114 rebuilder_typeC
: Ast_cocci.typeC inout
;
115 rebuilder_declaration
: Ast_cocci.declaration inout
;
116 rebuilder_initialiser
: Ast_cocci.initialiser inout
;
117 rebuilder_parameter
: Ast_cocci.parameterTypeDef inout
;
118 rebuilder_parameter_list
: Ast_cocci.parameter_list inout
;
119 rebuilder_statement
: Ast_cocci.statement inout
;
120 rebuilder_case_line
: Ast_cocci.case_line inout
;
121 rebuilder_rule_elem
: Ast_cocci.rule_elem inout
;
122 rebuilder_top_level
: Ast_cocci.top_level inout
;
123 rebuilder_expression_dots
: Ast_cocci.expression
Ast_cocci.dots inout
;
124 rebuilder_statement_dots
: Ast_cocci.statement
Ast_cocci.dots inout
;
125 rebuilder_declaration_dots
: Ast_cocci.declaration
Ast_cocci.dots inout
;
126 rebuilder_initialiser_dots
: Ast_cocci.initialiser
Ast_cocci.dots inout
;
127 rebuilder_define_param_dots
: Ast_cocci.define_param
Ast_cocci.dots inout
;
128 rebuilder_define_param
: Ast_cocci.define_param inout
;
129 rebuilder_define_parameters
: Ast_cocci.define_parameters inout
;
130 rebuilder_anything
: Ast_cocci.anything inout
}
132 type 'mc rmcode
= 'mc
Ast_cocci.mcode inout
133 type 'cd rcode
= rebuilder
-> ('cd inout
) -> 'cd inout
136 (Ast_cocci.meta_name rmcode
) ->
138 (Ast_cocci.constant rmcode
) ->
139 (Ast_cocci.assignOp rmcode
) ->
140 (Ast_cocci.fixOp rmcode
) ->
141 (Ast_cocci.unaryOp rmcode
) ->
142 (Ast_cocci.binaryOp rmcode
) ->
143 (Ast_cocci.const_vol rmcode
) ->
144 (Ast_cocci.sign rmcode
) ->
145 (Ast_cocci.structUnion rmcode
) ->
146 (Ast_cocci.storage rmcode
) ->
147 (Ast_cocci.inc_file rmcode
) ->
148 (Ast_cocci.expression
Ast_cocci.dots rcode
) ->
149 (Ast_cocci.parameterTypeDef
Ast_cocci.dots rcode
) ->
150 (Ast_cocci.statement
Ast_cocci.dots rcode
) ->
151 (Ast_cocci.declaration
Ast_cocci.dots rcode
) ->
152 (Ast_cocci.initialiser
Ast_cocci.dots rcode
) ->
153 (Ast_cocci.ident rcode
) ->
154 (Ast_cocci.expression rcode
) ->
155 (Ast_cocci.fullType rcode
) ->
156 (Ast_cocci.typeC rcode
) ->
157 (Ast_cocci.initialiser rcode
) ->
158 (Ast_cocci.parameterTypeDef rcode
) ->
159 (Ast_cocci.declaration rcode
) ->
160 (Ast_cocci.rule_elem rcode
) ->
161 (Ast_cocci.statement rcode
) ->
162 (Ast_cocci.case_line rcode
) ->
163 (Ast_cocci.top_level rcode
) ->
164 (Ast_cocci.anything rcode
) ->