[cfe-dev] Headers from C++ standard

Kim Gräsman via cfe-dev cfe-dev at lists.llvm.org
Mon May 9 08:51:20 PDT 2016


Hi Eric,

On Mon, May 9, 2016 at 3:30 PM, Eric Liu via cfe-dev
<cfe-dev at lists.llvm.org> wrote:
>
> As an alternative, we are thinking about parsing header synopses from C++
> standard. So, we are wondering if there are existing syntax-correct header
> synopses in the form of C++ header files somewhere that we can use. If not,
> Manual(@klimek) suggests that maybe we could have the header synopses as C++
> header files and have the standard draft includes them so that syntax can be
> easily checked, and we can conveniently parse the synopses too.

We've had similar plans for IWYU, and I think we eventually parsed the
TeX source from https://github.com/cplusplus/draft/tree/master/source
with a simple shell script.

I didn't do this myself, but I found a couple of examples in our source here:

  // These headers are defined in C++14 [headers]p3.  You can get them with
  // $ sed -n '/begin{floattable}.*{tab:cpp.c.headers}/,/end{floattable}/p'
lib-intro.tex | grep tcode | perl -nle 'm/tcode{<c(.*)>}/ && print qq@
 { "<$1.h>", kPublic, "<c$1>", kPublic },@' | sort
  // on https://github.com/cplusplus/draft/blob/master/source/lib-intro.tex

  // These headers are defined in C++14 [headers]p2.  You can get them with
  // $ sed -n '/begin{floattable}.*{tab:cpp.library.headers}/,/end{floattable}/p'
lib-intro.tex | grep tcode | perl -nle 'm/tcode{(.*)}/ && print qq@
"$1",@' | sort
  // on https://github.com/cplusplus/draft/blob/master/source/lib-intro.tex

(from https://github.com/include-what-you-use/include-what-you-use/blob/master/iwyu_include_picker.cc)

Assuming you want this to be portable I'm sure you can do something
similar in C++ relatively easily.

FWIW,
- Kim



More information about the cfe-dev mailing list