adlint 3.0.4 → 3.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/ChangeLog +374 -13
  2. data/INSTALL +1 -3
  3. data/MANIFEST +12 -0
  4. data/NEWS +30 -4
  5. data/README +0 -4
  6. data/TODO +2 -1
  7. data/etc/mesg.d/c_builtin/en_US/messages.yml +2 -2
  8. data/etc/mesg.d/c_builtin/ja_JP/messages.yml +2 -2
  9. data/etc/mesg.d/core/en_US/messages.yml +5 -1
  10. data/etc/mesg.d/core/ja_JP/messages.yml +5 -1
  11. data/features/code_check/W0422.feature +128 -0
  12. data/features/code_check/W0491.feature +57 -0
  13. data/features/code_check/W0492.feature +80 -0
  14. data/features/code_check/W0542.feature +20 -0
  15. data/features/code_check/W0580.feature +25 -0
  16. data/features/code_check/W0610.feature +36 -0
  17. data/features/code_check/W0642.feature +67 -0
  18. data/features/code_check/W0786.feature +39 -0
  19. data/features/code_check/W0830.feature +27 -0
  20. data/features/code_check/W1047.feature +72 -0
  21. data/features/code_check/W9003.feature +22 -0
  22. data/features/code_extraction/TODO +1 -0
  23. data/features/metric_measurement/TODO +1 -0
  24. data/lib/adlint/analyzer.rb +2 -2
  25. data/lib/adlint/cc1/ctrlexpr.rb +27 -6
  26. data/lib/adlint/cc1/domain.rb +72 -12
  27. data/lib/adlint/cc1/enum.rb +4 -0
  28. data/lib/adlint/cc1/expr.rb +31 -29
  29. data/lib/adlint/cc1/interp.rb +45 -56
  30. data/lib/adlint/cc1/lexer.rb +26 -5
  31. data/lib/adlint/cc1/mediator.rb +35 -6
  32. data/lib/adlint/cc1/object.rb +62 -19
  33. data/lib/adlint/cc1/parser.rb +948 -904
  34. data/lib/adlint/cc1/parser.y +59 -29
  35. data/lib/adlint/cc1/phase.rb +6 -8
  36. data/lib/adlint/cc1/syntax.rb +70 -17
  37. data/lib/adlint/cc1/util.rb +4 -4
  38. data/lib/adlint/code.rb +16 -6
  39. data/lib/adlint/cpp/eval.rb +31 -25
  40. data/lib/adlint/cpp/lexer.rb +11 -5
  41. data/lib/adlint/cpp/macro.rb +34 -7
  42. data/lib/adlint/cpp/phase.rb +8 -8
  43. data/lib/adlint/error.rb +6 -0
  44. data/lib/adlint/exam/c_builtin/cc1_check.rb +557 -594
  45. data/lib/adlint/exam/c_builtin/cc1_check_shima.rb +72 -72
  46. data/lib/adlint/exam/c_builtin/cc1_code.rb +72 -52
  47. data/lib/adlint/exam/c_builtin/cc1_metric.rb +131 -131
  48. data/lib/adlint/exam/c_builtin/cpp_check.rb +48 -48
  49. data/lib/adlint/exam/c_builtin/cpp_check_shima.rb +2 -2
  50. data/lib/adlint/exam/c_builtin/cpp_code.rb +21 -21
  51. data/lib/adlint/exam/c_builtin/ld_check.rb +88 -87
  52. data/lib/adlint/exam/c_builtin/ld_metric.rb +4 -5
  53. data/lib/adlint/exam/c_builtin.rb +6 -6
  54. data/lib/adlint/ld/object.rb +269 -186
  55. data/lib/adlint/ld/phase.rb +19 -19
  56. data/lib/adlint/ld/typedef.rb +7 -7
  57. data/lib/adlint/ld/util.rb +25 -17
  58. data/lib/adlint/location.rb +6 -1
  59. data/lib/adlint/memo.rb +66 -13
  60. data/lib/adlint/prelude.rb +2 -2
  61. data/lib/adlint/report.rb +13 -14
  62. data/lib/adlint/util.rb +1 -1
  63. data/lib/adlint/version.rb +2 -2
  64. data/share/doc/Makefile +6 -2
  65. data/share/doc/c99gram.dot +502 -0
  66. data/share/doc/c99gram.pdf +0 -0
  67. data/share/doc/developers_guide_ja.html +4 -3
  68. data/share/doc/developers_guide_ja.texi +2 -1
  69. data/share/doc/users_guide_en.html +9 -9
  70. data/share/doc/users_guide_en.texi +7 -7
  71. data/share/doc/users_guide_ja.html +9 -9
  72. data/share/doc/users_guide_ja.texi +7 -7
  73. metadata +14 -2
@@ -0,0 +1,502 @@
1
+ strict digraph "ISO C99 Grammer" {
2
+ //
3
+ // terminal nodes
4
+ //
5
+ node [shape=box];
6
+ IDENTIFIER;
7
+ TYPEDEF_NAME;
8
+ CONSTANT;
9
+ STRING_LITERAL;
10
+ SIZEOF;
11
+ TYPEDEF;
12
+ EXTERN;
13
+ STATIC;
14
+ AUTO;
15
+ REGISTER;
16
+ INLINE;
17
+ RESTRICT;
18
+ CHAR;
19
+ SHORT;
20
+ INT;
21
+ LONG;
22
+ SIGNED;
23
+ UNSIGNED;
24
+ FLOAT;
25
+ DOUBLE;
26
+ CONST;
27
+ VOLATILE;
28
+ VOID;
29
+ BOOL;
30
+ COMPLEX;
31
+ IMAGINARY;
32
+ STRUCT;
33
+ UNION;
34
+ ENUM;
35
+ CASE;
36
+ DEFAULT;
37
+ IF;
38
+ ELSE;
39
+ SWITCH;
40
+ WHILE;
41
+ DO;
42
+ FOR;
43
+ GOTO;
44
+ CONTINUE;
45
+ BREAK;
46
+ RETURN;
47
+ NULL;
48
+ TYPEOF;
49
+ ALIGNOF;
50
+ "!";
51
+ "!=";
52
+ "%";
53
+ "%=";
54
+ "&";
55
+ "&&";
56
+ "&=";
57
+ "(";
58
+ ")";
59
+ "*";
60
+ "*=";
61
+ "+";
62
+ "++";
63
+ "+=";
64
+ ",";
65
+ "-";
66
+ "--";
67
+ "-=";
68
+ "->";
69
+ ".";
70
+ "...";
71
+ "/";
72
+ "/=";
73
+ ":";
74
+ ";";
75
+ "<";
76
+ "<<";
77
+ "<<=";
78
+ "<=";
79
+ "=";
80
+ "==";
81
+ ">";
82
+ ">=";
83
+ ">>";
84
+ ">>=";
85
+ "?";
86
+ "[";
87
+ "]";
88
+ "^";
89
+ "^=";
90
+ "{";
91
+ "|";
92
+ "|=";
93
+ "||";
94
+ "}";
95
+ "~";
96
+
97
+ //
98
+ // non-terminal nodes
99
+ //
100
+ node [shape=ellipse];
101
+ primary_expression;
102
+ postfix_expression;
103
+ argument_expression_list;
104
+ unary_expression;
105
+ unary_arithmetic_operator;
106
+ cast_expression;
107
+ multiplicative_expression;
108
+ additive_expression;
109
+ shift_expression;
110
+ relational_expression;
111
+ equality_expression;
112
+ and_expression;
113
+ exclusive_or_expression;
114
+ inclusive_or_expression;
115
+ logical_and_expression;
116
+ logical_or_expression;
117
+ conditional_expression;
118
+ assignment_expression;
119
+ compound_assignment_operator;
120
+ expression;
121
+ constant_expression;
122
+ declaration;
123
+ global_declaration;
124
+ declaration_specifiers;
125
+ init_declarator_list;
126
+ init_declarator;
127
+ storage_class_specifier;
128
+ type_specifier;
129
+ struct_or_union_specifier;
130
+ struct_declaration_list;
131
+ struct_declaration;
132
+ specifier_qualifier_list;
133
+ struct_declarator_list;
134
+ struct_declarator;
135
+ enum_specifier;
136
+ enumerator_list;
137
+ enumerator;
138
+ type_qualifier;
139
+ function_specifier;
140
+ declarator;
141
+ direct_declarator;
142
+ pointer;
143
+ type_qualifier_list;
144
+ parameter_type_list;
145
+ parameter_list;
146
+ parameter_declaration;
147
+ identifier_list;
148
+ type_name;
149
+ abstract_declarator;
150
+ direct_abstract_declarator;
151
+ initializer;
152
+ initializer_list;
153
+ designation;
154
+ designator_list;
155
+ designator;
156
+ statement;
157
+ labeled_statement;
158
+ compound_statement;
159
+ block_item_list;
160
+ block_item;
161
+ expression_statement;
162
+ selection_statement;
163
+ iteration_statement;
164
+ jump_statement;
165
+ translation_unit;
166
+ external_declaration;
167
+ function_definition;
168
+ local_function_definition;
169
+ declaration_list;
170
+
171
+ //
172
+ // edges
173
+ //
174
+ primary_expression -> IDENTIFIER;
175
+ primary_expression -> CONSTANT;
176
+ primary_expression -> STRING_LITERAL;
177
+ primary_expression -> NULL;
178
+ primary_expression -> "("; primary_expression -> expression; primary_expression -> ")";
179
+ primary_expression -> "("; primary_expression -> compound_statement; primary_expression -> ")";
180
+
181
+ postfix_expression -> primary_expression;
182
+ postfix_expression -> postfix_expression; postfix_expression -> "["; postfix_expression -> expression; postfix_expression -> "]";
183
+ postfix_expression -> postfix_expression; postfix_expression -> "("; postfix_expression -> ")";
184
+ postfix_expression -> postfix_expression; postfix_expression -> "("; postfix_expression -> argument_expression_list; postfix_expression -> ")";
185
+ postfix_expression -> postfix_expression; postfix_expression -> "."; postfix_expression -> IDENTIFIER;
186
+ postfix_expression -> postfix_expression; postfix_expression -> "->"; postfix_expression -> IDENTIFIER;
187
+ postfix_expression -> postfix_expression; postfix_expression -> "."; postfix_expression -> CONSTANT;
188
+ postfix_expression -> postfix_expression; postfix_expression -> "->"; postfix_expression -> CONSTANT;
189
+ postfix_expression -> postfix_expression; postfix_expression -> "++";
190
+ postfix_expression -> postfix_expression; postfix_expression -> "--";
191
+ postfix_expression -> "("; postfix_expression -> type_name; postfix_expression -> ")"; postfix_expression -> "{"; postfix_expression -> initializer_list; postfix_expression -> "}";
192
+ postfix_expression -> "("; postfix_expression -> type_name; postfix_expression -> ")"; postfix_expression -> "{"; postfix_expression -> initializer_list; postfix_expression -> ","; postfix_expression -> "}";
193
+
194
+ argument_expression_list -> assignment_expression;
195
+ argument_expression_list -> argument_expression_list; argument_expression_list -> ","; argument_expression_list -> assignment_expression;
196
+
197
+ unary_expression -> postfix_expression;
198
+ unary_expression -> "++"; unary_expression -> unary_expression;
199
+ unary_expression -> "--"; unary_expression -> unary_expression;
200
+ unary_expression -> "&"; unary_expression -> cast_expression;
201
+ unary_expression -> "*"; unary_expression -> cast_expression;
202
+ unary_expression -> unary_arithmetic_operator; unary_expression -> cast_expression;
203
+ unary_expression -> SIZEOF; unary_expression -> unary_expression;
204
+ unary_expression -> SIZEOF; unary_expression -> "("; unary_expression -> type_name; unary_expression -> ")";
205
+ unary_expression -> ALIGNOF; unary_expression -> unary_expression;
206
+ unary_expression -> ALIGNOF; unary_expression -> "("; unary_expression -> type_name; unary_expression -> ")";
207
+ unary_expression -> "&&"; unary_expression -> unary_expression;
208
+
209
+ unary_arithmetic_operator -> "+";
210
+ unary_arithmetic_operator -> "-";
211
+ unary_arithmetic_operator -> "~";
212
+ unary_arithmetic_operator -> "!";
213
+
214
+ cast_expression -> unary_expression;
215
+ cast_expression -> "("; cast_expression -> type_name; cast_expression -> ")"; cast_expression -> cast_expression;
216
+
217
+ multiplicative_expression -> cast_expression;
218
+ multiplicative_expression -> multiplicative_expression; multiplicative_expression -> "*"; multiplicative_expression -> cast_expression;
219
+ multiplicative_expression -> multiplicative_expression; multiplicative_expression -> "/"; multiplicative_expression -> cast_expression;
220
+ multiplicative_expression -> multiplicative_expression; multiplicative_expression -> "%"; multiplicative_expression -> cast_expression;
221
+
222
+ additive_expression -> multiplicative_expression;
223
+ additive_expression -> additive_expression; additive_expression -> "+"; additive_expression -> multiplicative_expression;
224
+ additive_expression -> additive_expression; additive_expression -> "-"; additive_expression -> multiplicative_expression;
225
+
226
+ shift_expression -> additive_expression;
227
+ shift_expression -> shift_expression; shift_expression -> "<<"; shift_expression -> additive_expression;
228
+ shift_expression -> shift_expression; shift_expression -> ">>"; shift_expression -> additive_expression;
229
+
230
+ relational_expression -> shift_expression;
231
+ relational_expression -> relational_expression; relational_expression -> "<"; relational_expression -> shift_expression;
232
+ relational_expression -> relational_expression; relational_expression -> ">"; relational_expression -> shift_expression;
233
+ relational_expression -> relational_expression; relational_expression -> "<="; relational_expression -> shift_expression;
234
+ relational_expression -> relational_expression; relational_expression -> ">="; relational_expression -> shift_expression;
235
+
236
+ equality_expression -> relational_expression;
237
+ equality_expression -> equality_expression; equality_expression -> "=="; equality_expression -> relational_expression;
238
+ equality_expression -> equality_expression; equality_expression -> "!="; equality_expression -> relational_expression;
239
+
240
+ and_expression -> equality_expression;
241
+ and_expression -> and_expression; and_expression -> "&"; and_expression -> equality_expression;
242
+
243
+ exclusive_or_expression -> and_expression;
244
+ exclusive_or_expression -> exclusive_or_expression; exclusive_or_expression -> "^"; exclusive_or_expression -> and_expression;
245
+
246
+ inclusive_or_expression -> exclusive_or_expression;
247
+ inclusive_or_expression -> inclusive_or_expression; inclusive_or_expression -> "|"; inclusive_or_expression -> exclusive_or_expression;
248
+
249
+ logical_and_expression -> inclusive_or_expression;
250
+ logical_and_expression -> logical_and_expression; logical_and_expression -> "&&"; logical_and_expression -> inclusive_or_expression;
251
+
252
+ logical_or_expression -> logical_and_expression;
253
+ logical_or_expression -> logical_or_expression; logical_or_expression -> "||"; logical_or_expression -> logical_and_expression;
254
+
255
+ conditional_expression -> logical_or_expression;
256
+ conditional_expression -> logical_or_expression; conditional_expression -> "?"; conditional_expression -> expression; conditional_expression -> ":"; conditional_expression -> conditional_expression;
257
+
258
+ assignment_expression -> conditional_expression;
259
+ assignment_expression -> cast_expression; assignment_expression -> "="; assignment_expression -> assignment_expression;
260
+ assignment_expression -> cast_expression; assignment_expression -> compound_assignment_operator; assignment_expression -> assignment_expression;
261
+
262
+ compound_assignment_operator -> "*=";
263
+ compound_assignment_operator -> "/=";
264
+ compound_assignment_operator -> "%=";
265
+ compound_assignment_operator -> "+=";
266
+ compound_assignment_operator -> "-=";
267
+ compound_assignment_operator -> "<<=";
268
+ compound_assignment_operator -> ">>=";
269
+ compound_assignment_operator -> "&=";
270
+ compound_assignment_operator -> "^=";
271
+ compound_assignment_operator -> "|=";
272
+
273
+ expression -> assignment_expression;
274
+ expression -> expression; expression -> ","; expression -> assignment_expression;
275
+
276
+ constant_expression -> conditional_expression;
277
+
278
+ declaration -> declaration_specifiers; declaration -> ";";
279
+ declaration -> declaration_specifiers; declaration -> init_declarator_list; declaration -> ";";
280
+
281
+ global_declaration -> declaration;
282
+ global_declaration -> init_declarator_list; global_declaration -> ";";
283
+
284
+ declaration_specifiers -> storage_class_specifier;
285
+ declaration_specifiers -> declaration_specifiers; declaration_specifiers -> storage_class_specifier;
286
+ declaration_specifiers -> type_specifier;
287
+ declaration_specifiers -> declaration_specifiers; declaration_specifiers -> type_specifier;
288
+ declaration_specifiers -> type_qualifier;
289
+ declaration_specifiers -> declaration_specifiers; declaration_specifiers -> type_qualifier;
290
+ declaration_specifiers -> function_specifier;
291
+ declaration_specifiers -> declaration_specifiers; declaration_specifiers -> function_specifier;
292
+
293
+ init_declarator_list -> init_declarator;
294
+ init_declarator_list -> init_declarator_list; init_declarator_list -> ","; init_declarator_list -> init_declarator;
295
+
296
+ init_declarator -> declarator;
297
+ init_declarator -> declarator; init_declarator -> "="; init_declarator -> initializer;
298
+
299
+ storage_class_specifier -> TYPEDEF;
300
+ storage_class_specifier -> EXTERN;
301
+ storage_class_specifier -> STATIC;
302
+ storage_class_specifier -> AUTO;
303
+ storage_class_specifier -> REGISTER;
304
+
305
+ type_specifier -> VOID;
306
+ type_specifier -> CHAR;
307
+ type_specifier -> SHORT;
308
+ type_specifier -> INT;
309
+ type_specifier -> LONG;
310
+ type_specifier -> FLOAT;
311
+ type_specifier -> DOUBLE;
312
+ type_specifier -> SIGNED;
313
+ type_specifier -> UNSIGNED;
314
+ type_specifier -> BOOL;
315
+ type_specifier -> COMPLEX;
316
+ type_specifier -> IMAGINARY;
317
+ type_specifier -> TYPEDEF_NAME;
318
+ type_specifier -> struct_or_union_specifier;
319
+ type_specifier -> enum_specifier;
320
+ type_specifier -> TYPEOF; type_specifier -> "("; type_specifier -> constant_expression; type_specifier -> ")";
321
+ type_specifier -> TYPEOF; type_specifier -> "("; type_specifier -> type_name; type_specifier -> ")";
322
+
323
+ struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> "{"; struct_or_union_specifier -> struct_declaration_list; struct_or_union_specifier -> "}";
324
+ struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> "{"; struct_or_union_specifier -> "}";
325
+ struct_or_union_specifier -> UNION; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> "{"; struct_or_union_specifier -> struct_declaration_list; struct_or_union_specifier -> "}";
326
+ struct_or_union_specifier -> UNION; struct_or_union_specifier -> IDENTIFIER; struct_or_union_specifier -> "{"; struct_or_union_specifier -> "}";
327
+ struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> "{"; struct_or_union_specifier -> struct_declaration_list; struct_or_union_specifier -> "}";
328
+ struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> "{"; struct_or_union_specifier -> "}";
329
+ struct_or_union_specifier -> UNION; struct_or_union_specifier -> "{"; struct_or_union_specifier -> struct_declaration_list; struct_or_union_specifier -> "}";
330
+ struct_or_union_specifier -> UNION; struct_or_union_specifier -> "{"; struct_or_union_specifier -> "}";
331
+ struct_or_union_specifier -> STRUCT; struct_or_union_specifier -> IDENTIFIER;
332
+ struct_or_union_specifier -> UNION; struct_or_union_specifier -> IDENTIFIER;
333
+
334
+ struct_declaration_list -> struct_declaration;
335
+ struct_declaration_list -> struct_declaration_list; struct_declaration_list -> struct_declaration;
336
+
337
+ struct_declaration -> specifier_qualifier_list; struct_declaration -> ";";
338
+ struct_declaration -> specifier_qualifier_list; struct_declaration -> struct_declarator_list; struct_declarator_list -> ";";
339
+
340
+ specifier_qualifier_list -> specifier_qualifier_list; specifier_qualifier_list -> type_specifier;
341
+ specifier_qualifier_list -> type_specifier;
342
+ specifier_qualifier_list -> specifier_qualifier_list; specifier_qualifier_list -> type_qualifier;
343
+ specifier_qualifier_list -> type_qualifier;
344
+
345
+ struct_declarator_list -> struct_declarator;
346
+ struct_declarator_list -> struct_declarator_list; struct_declarator_list -> ","; struct_declarator_list -> struct_declarator;
347
+
348
+ struct_declarator -> declarator;
349
+ struct_declarator -> ":"; struct_declarator -> constant_expression;
350
+ struct_declarator -> declarator; struct_declarator -> ":"; struct_declarator -> constant_expression;
351
+
352
+ enum_specifier -> ENUM; enum_specifier -> "{"; enum_specifier -> enumerator_list; enum_specifier -> "}";
353
+ enum_specifier -> ENUM; enum_specifier -> IDENTIFIER; enum_specifier -> "{"; enum_specifier -> enumerator_list; enum_specifier -> "}";
354
+ enum_specifier -> ENUM; enum_specifier -> "{"; enum_specifier -> enumerator_list; enum_specifier -> ","; enum_specifier -> "}";
355
+ enum_specifier -> ENUM; enum_specifier -> IDENTIFIER; enum_specifier -> "{"; enum_specifier -> enumerator_list; enum_specifier -> ","; enum_specifier -> "}";
356
+ enum_specifier -> ENUM; enum_specifier -> IDENTIFIER;
357
+
358
+ enumerator_list -> enumerator;
359
+ enumerator_list -> enumerator_list; enumerator_list -> ","; enumerator_list -> enumerator;
360
+
361
+ enumerator -> IDENTIFIER;
362
+ enumerator -> IDENTIFIER; enumerator -> "="; enumerator -> constant_expression;
363
+
364
+ type_qualifier -> CONST;
365
+ type_qualifier -> VOLATILE;
366
+ type_qualifier -> RESTRICT;
367
+
368
+ function_specifier -> INLINE;
369
+
370
+ declarator -> pointer; declarator -> direct_declarator;
371
+ declarator -> direct_declarator;
372
+
373
+ direct_declarator -> IDENTIFIER;
374
+ direct_declarator -> "("; direct_declarator -> declarator; direct_declarator -> ")";
375
+ direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> type_qualifier_list; direct_declarator -> assignment_expression; direct_declarator -> "]";
376
+ direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> type_qualifier_list; direct_declarator -> "]";
377
+ direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> assignment_expression; direct_declarator -> "]";
378
+ direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> STATIC; direct_declarator -> type_qualifier_list; direct_declarator -> assignment_expression; direct_declarator -> "]";
379
+ direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> type_qualifier_list; direct_declarator -> STATIC; direct_declarator -> assignment_expression; direct_declarator -> "]";
380
+ direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> type_qualifier_list; direct_declarator -> "*"; direct_declarator -> "]";
381
+ direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> "*"; direct_declarator -> "]";
382
+ direct_declarator -> direct_declarator; direct_declarator -> "["; direct_declarator -> "]";
383
+ direct_declarator -> direct_declarator; direct_declarator -> "("; direct_declarator -> parameter_type_list; direct_declarator -> ")";
384
+ direct_declarator -> direct_declarator; direct_declarator -> "("; direct_declarator -> identifier_list; direct_declarator -> ")";
385
+ direct_declarator -> direct_declarator; direct_declarator -> "("; direct_declarator -> ")";
386
+
387
+ pointer -> "*";
388
+ pointer -> "*"; pointer -> type_qualifier_list;
389
+ pointer -> "*"; pointer -> pointer;
390
+ pointer -> "*"; pointer -> type_qualifier_list; pointer -> pointer;
391
+
392
+ type_qualifier_list -> type_qualifier;
393
+ type_qualifier_list -> type_qualifier_list; type_qualifier_list -> type_qualifier;
394
+
395
+ parameter_type_list -> parameter_list;
396
+ parameter_type_list -> parameter_list; parameter_type_list -> ","; parameter_type_list -> "...";
397
+
398
+ parameter_list -> parameter_declaration;
399
+ parameter_list -> parameter_list; parameter_list -> ","; parameter_list -> parameter_declaration;
400
+
401
+ parameter_declaration -> declaration_specifiers; parameter_declaration -> declarator;
402
+ parameter_declaration -> declaration_specifiers; parameter_declaration -> abstract_declarator;
403
+ parameter_declaration -> declaration_specifiers;
404
+
405
+ identifier_list -> IDENTIFIER;
406
+ identifier_list -> identifier_list; identifier_list -> ","; identifier_list -> IDENTIFIER;
407
+
408
+ type_name -> specifier_qualifier_list;
409
+ type_name -> specifier_qualifier_list; type_name -> abstract_declarator;
410
+
411
+ abstract_declarator -> pointer;
412
+ abstract_declarator -> pointer; abstract_declarator -> direct_abstract_declarator;
413
+ abstract_declarator -> direct_abstract_declarator;
414
+
415
+ direct_abstract_declarator -> "("; direct_abstract_declarator -> abstract_declarator; direct_abstract_declarator -> ")";
416
+ direct_abstract_declarator -> "["; direct_abstract_declarator -> "]";
417
+ direct_abstract_declarator -> "["; direct_abstract_declarator -> assignment_expression; direct_abstract_declarator -> "]";
418
+ direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "["; direct_abstract_declarator -> "]";
419
+ direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "["; direct_abstract_declarator -> assignment_expression; direct_abstract_declarator -> "]";
420
+ direct_abstract_declarator -> "["; direct_abstract_declarator -> "*"; direct_abstract_declarator -> "]";
421
+ direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "["; direct_abstract_declarator -> "*"; direct_abstract_declarator -> "]";
422
+ direct_abstract_declarator -> "("; direct_abstract_declarator -> ")";
423
+ direct_abstract_declarator -> "("; direct_abstract_declarator -> parameter_type_list; direct_abstract_declarator -> ")";
424
+ direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "("; direct_abstract_declarator -> ")";
425
+ direct_abstract_declarator -> direct_abstract_declarator; direct_abstract_declarator -> "("; direct_abstract_declarator -> parameter_type_list; direct_abstract_declarator -> ")";
426
+
427
+ initializer -> assignment_expression;
428
+ initializer -> "{"; initializer -> "}";
429
+ initializer -> "{"; initializer -> initializer_list; initializer -> "}";
430
+ initializer -> "{"; initializer -> initializer_list; initializer -> ","; initializer -> "}";
431
+
432
+ initializer_list -> initializer;
433
+ initializer_list -> designation; initializer_list -> initializer;
434
+ initializer_list -> initializer_list; initializer_list -> ","; initializer_list -> initializer;
435
+ initializer_list -> initializer_list; initializer_list -> ","; initializer_list -> designation; initializer_list -> initializer;
436
+
437
+ designation -> designator_list; designation -> "=";
438
+
439
+ designator_list -> designator;
440
+ designator_list -> designator_list; designator_list -> designator;
441
+
442
+ designator -> "["; designator -> constant_expression; designator -> "]";
443
+ designator -> "."; designator -> IDENTIFIER;
444
+
445
+ statement -> labeled_statement;
446
+ statement -> compound_statement;
447
+ statement -> expression_statement;
448
+ statement -> selection_statement;
449
+ statement -> iteration_statement;
450
+ statement -> jump_statement;
451
+
452
+ labeled_statement -> IDENTIFIER; labeled_statement -> ":"; labeled_statement -> statement;
453
+ labeled_statement -> CASE; labeled_statement -> constant_expression; labeled_statement -> ":"; labeled_statement -> statement;
454
+ labeled_statement -> DEFAULT; labeled_statement -> ":"; labeled_statement -> statement;
455
+
456
+ compound_statement -> "{"; compound_statement -> "}";
457
+ compound_statement -> "{"; compound_statement -> block_item_list; compound_statement -> "}";
458
+
459
+ block_item_list -> block_item;
460
+ block_item_list -> block_item_list; block_item_list -> block_item;
461
+
462
+ block_item -> declaration;
463
+ block_item -> statement;
464
+ block_item -> local_function_definition;
465
+
466
+ expression_statement -> ";";
467
+ expression_statement -> expression; expression_statement -> ";";
468
+
469
+ selection_statement -> IF; selection_statement -> "("; selection_statement -> expression; selection_statement -> ")"; selection_statement -> statement;
470
+ selection_statement -> IF; selection_statement -> "("; selection_statement -> expression; selection_statement -> ")"; selection_statement -> statement; selection_statement -> ELSE; selection_statement -> statement;
471
+ selection_statement -> SWITCH; selection_statement -> "("; selection_statement -> expression; selection_statement -> ")"; selection_statement -> statement;
472
+
473
+ iteration_statement -> WHILE; iteration_statement -> "("; iteration_statement -> expression; iteration_statement -> ")"; iteration_statement -> statement;
474
+ iteration_statement -> DO; iteration_statement -> statement; iteration_statement -> WHILE; iteration_statement -> "("; iteration_statement -> expression; iteration_statement -> ")"; iteration_statement -> ";";
475
+ iteration_statement -> FOR; iteration_statement -> "("; iteration_statement -> expression_statement; iteration_statement -> expression_statement; iteration_statement -> ")"; iteration_statement -> statement;
476
+ iteration_statement -> FOR; iteration_statement -> "("; iteration_statement -> expression_statement; iteration_statement -> expression_statement; iteration_statement -> expression; iteration_statement -> ")"; iteration_statement -> statement;
477
+ iteration_statement -> FOR; iteration_statement -> "("; iteration_statement -> declaration; iteration_statement -> expression_statement; iteration_statement -> ")"; iteration_statement -> statement;
478
+ iteration_statement -> FOR; iteration_statement -> "("; iteration_statement -> declaration; iteration_statement -> expression_statement; iteration_statement -> expression; iteration_statement -> ")"; iteration_statement -> statement;
479
+
480
+ jump_statement -> GOTO; jump_statement -> IDENTIFIER; jump_statement -> ";";
481
+ jump_statement -> GOTO; jump_statement -> "*"; jump_statement -> expression; jump_statement -> ";";
482
+ jump_statement -> CONTINUE; jump_statement -> ";";
483
+ jump_statement -> BREAK; jump_statement -> ";";
484
+ jump_statement -> RETURN; jump_statement -> ";";
485
+ jump_statement -> RETURN; jump_statement -> expression; jump_statement -> ";";
486
+
487
+ translation_unit -> translation_unit; translation_unit -> external_declaration;
488
+
489
+ external_declaration -> function_definition;
490
+ external_declaration -> global_declaration;
491
+
492
+ function_definition -> declaration_specifiers; function_definition -> declarator; function_definition -> declaration_list; function_definition -> compound_statement;
493
+ function_definition -> declaration_specifiers; function_definition -> declarator; function_definition -> compound_statement;
494
+ function_definition -> declarator; function_definition -> declaration_list; function_definition -> compound_statement;
495
+ function_definition -> declarator; function_definition -> compound_statement;
496
+
497
+ local_function_definition -> declaration_specifiers; local_function_definition -> declarator; local_function_definition -> declaration_list; local_function_definition -> compound_statement;
498
+ local_function_definition -> declaration_specifiers; local_function_definition -> declarator; local_function_definition -> compound_statement;
499
+
500
+ declaration_list -> declaration;
501
+ declaration_list -> declaration_list; declaration_list -> declaration;
502
+ }
Binary file
@@ -1,8 +1,8 @@
1
1
  <html lang="ja">
2
2
  <head>
3
- <title>AdLint 3.0.4 開発者ガイド</title>
3
+ <title>AdLint 3.0.8 開発者ガイド</title>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <meta name="description" content="AdLint 3.0.4 開発者ガイド">
5
+ <meta name="description" content="AdLint 3.0.8 開発者ガイド">
6
6
  <meta name="generator" content="makeinfo 4.13">
7
7
  <link title="Top" rel="top" href="#Top">
8
8
  <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
@@ -44,7 +44,7 @@ td { border: 1px solid black; }
44
44
  --></style>
45
45
  </head>
46
46
  <body>
47
- <h1 class="settitle">AdLint 3.0.4 開発者ガイド</h1>
47
+ <h1 class="settitle">AdLint 3.0.8 開発者ガイド</h1>
48
48
  <div class="contents">
49
49
  <h2>Table of Contents</h2>
50
50
  <ul>
@@ -282,6 +282,7 @@ qualified -> qualed
282
282
  error -> err
283
283
  project -> proj
284
284
  temporary -> tmp
285
+ referrer-function -> ref_fun
285
286
  </pre>
286
287
 
287
288
  <div class="node">
@@ -2,7 +2,7 @@
2
2
  @setfilename developers_guide_ja.info
3
3
  @documentlanguage ja
4
4
  @documentencoding utf-8
5
- @settitle AdLint 3.0.4 開発者ガイド
5
+ @settitle AdLint 3.0.8 開発者ガイド
6
6
 
7
7
  @copying
8
8
  Copyright (C) 2010-2013, OGIS-RI Co.,Ltd.
@@ -211,6 +211,7 @@ qualified -> qualed
211
211
  error -> err
212
212
  project -> proj
213
213
  temporary -> tmp
214
+ referrer-function -> ref_fun
214
215
  @end verbatim
215
216
 
216
217
 
@@ -1,8 +1,8 @@
1
1
  <html lang="en">
2
2
  <head>
3
- <title>AdLint 3.0.4 User's Guide</title>
3
+ <title>AdLint 3.0.8 User's Guide</title>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
- <meta name="description" content="AdLint 3.0.4 User's Guide">
5
+ <meta name="description" content="AdLint 3.0.8 User's Guide">
6
6
  <meta name="generator" content="makeinfo 4.13">
7
7
  <link title="Top" rel="top" href="#Top">
8
8
  <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
@@ -44,7 +44,7 @@ td { border: 1px solid black; }
44
44
  --></style>
45
45
  </head>
46
46
  <body>
47
- <h1 class="settitle">AdLint 3.0.4 User's Guide</h1>
47
+ <h1 class="settitle">AdLint 3.0.8 User's Guide</h1>
48
48
  <div class="node">
49
49
  <a name="Top"></a>
50
50
  <p><hr>
@@ -2861,7 +2861,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Top">Top</a>
2861
2861
  <li><a href="#W0639">W0639</a>: %sth conversion specifier doesn't match with corresponding type of actual argument.
2862
2862
  <li><a href="#W0640">W0640</a>: The actual argument of scanf function have to pass the object pointer to store the data.
2863
2863
  <li><a href="#W0641">W0641</a>: Floating-point number type cast to pointer to object and vice versa.
2864
- <li><a href="#W0642">W0642</a>: It is impossible to get the array's address which declared with 'register'.
2864
+ <li><a href="#W0642">W0642</a>: Address derivation from the object declared as `register' is prohibited.
2865
2865
  <li><a href="#W0643">W0643</a>: This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
2866
2866
  <li><a href="#W0644">W0644</a>: A value in void statement is going to use. 'void' statement doesn't have a value.
2867
2867
  <li><a href="#W0645">W0645</a>: 'void' type cannot use in the type of formal argument.
@@ -30664,7 +30664,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30664
30664
 
30665
30665
  <h4 class="subsection">6.524.1 Message body</h4>
30666
30666
 
30667
- <p>It is impossible to get the array's address which declared with 'register'.
30667
+ <p>Address derivation from the object declared as `register' is prohibited.
30668
30668
 
30669
30669
  <h4 class="subsection">6.524.2 Content</h4>
30670
30670
 
@@ -30724,7 +30724,7 @@ const char *str = MACRO(foo\); /* W0643 */
30724
30724
  <h4 class="subsection">6.525.4 Related message</h4>
30725
30725
 
30726
30726
  <ul>
30727
- <li><a href="#W0642">W0642</a> It is impossible to get the array's address which declared with 'register'.
30727
+ <li><a href="#W0642">W0642</a> Address derivation from the object declared as `register' is prohibited.
30728
30728
  <li><a href="#W0644">W0644</a> A value in void statement is going to use. 'void' statement doesn't have a value.
30729
30729
  <li><a href="#W0645">W0645</a> 'void' type cannot use in the type of formal argument.
30730
30730
  <li><a href="#W0646">W0646</a> A normal string literal and a wide string literal are contiguous.
@@ -30768,7 +30768,7 @@ int bar(void)
30768
30768
  <h4 class="subsection">6.526.4 Related message</h4>
30769
30769
 
30770
30770
  <ul>
30771
- <li><a href="#W0642">W0642</a> It is impossible to get the array's address which declared with 'register'.
30771
+ <li><a href="#W0642">W0642</a> Address derivation from the object declared as `register' is prohibited.
30772
30772
  <li><a href="#W0643">W0643</a> This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
30773
30773
  <li><a href="#W0645">W0645</a> 'void' type cannot use in the type of formal argument.
30774
30774
  <li><a href="#W0646">W0646</a> A normal string literal and a wide string literal are contiguous.
@@ -30810,7 +30810,7 @@ void a;
30810
30810
  <h4 class="subsection">6.527.4 Related message</h4>
30811
30811
 
30812
30812
  <ul>
30813
- <li><a href="#W0642">W0642</a> It is impossible to get the array's address which declared with 'register'.
30813
+ <li><a href="#W0642">W0642</a> Address derivation from the object declared as `register' is prohibited.
30814
30814
  <li><a href="#W0643">W0643</a> This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
30815
30815
  <li><a href="#W0644">W0644</a> A value in void statement is going to use. 'void' statement doesn't have a value.
30816
30816
  <li><a href="#W0646">W0646</a> A normal string literal and a wide string literal are contiguous.
@@ -30849,7 +30849,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="#Messages">Messages</a>
30849
30849
  <h4 class="subsection">6.528.4 Related message</h4>
30850
30850
 
30851
30851
  <ul>
30852
- <li><a href="#W0642">W0642</a> It is impossible to get the array's address which declared with 'register'.
30852
+ <li><a href="#W0642">W0642</a> Address derivation from the object declared as `register' is prohibited.
30853
30853
  <li><a href="#W0643">W0643</a> This string literal constituted by a macro is illegal form unenclosed by `"'. `#'operator may apply to actual argument which has '\' at the end.
30854
30854
  <li><a href="#W0644">W0644</a> A value in void statement is going to use. 'void' statement doesn't have a value.
30855
30855
  <li><a href="#W0645">W0645</a> 'void' type cannot use in the type of formal argument.