3 # Find missing and extra parameters in documentation compared to
4 # output of: gcc --help=params.
6 # This file is part of GCC.
8 # GCC is free software; you can redistribute it and/or modify it under
9 # the terms of the GNU General Public License as published by the Free
10 # Software Foundation; either version 3, or (at your option) any later
13 # GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18 # You should have received a copy of the GNU General Public License
19 # along with GCC; see the file COPYING3. If not see
20 # <http://www.gnu.org/licenses/>. */
29 from itertools
import *
31 def get_param_tuple(line
):
34 return (line
[:i
], line
[i
:].strip())
36 parser
= argparse
.ArgumentParser()
37 parser
.add_argument('texi_file')
38 parser
.add_argument('params_output')
40 args
= parser
.parse_args()
42 ignored
= set(['logical-op-non-short-circuit'])
45 for line
in open(args
.params_output
).readlines():
46 if line
.startswith(' '):
47 r
= get_param_tuple(line
)
50 # Find section in .texi manual with parameters
51 texi
= ([x
.strip() for x
in open(args
.texi_file
).readlines()])
52 texi
= dropwhile(lambda x
: not 'item --param' in x
, texi
)
53 texi
= takewhile(lambda x
: not '@node Instrumentation Options' in x
, texi
)
57 texi
= [x
[len(token
):] for x
in texi
if x
.startswith(token
)]
58 sorted_texi
= sorted(texi
)
60 texi_set
= set(texi
) - ignored
61 params_set
= set(params
.keys()) - ignored
63 extra
= texi_set
- params_set
68 missing
= params_set
- texi_set
76 if texi
!= sorted_texi
:
77 print('WARNING: not sorted alphabetically!')