[cfe-dev] Headers from C++ standard

Gabriel Dos Reis via cfe-dev cfe-dev at lists.llvm.org
Wed May 11 09:11:06 PDT 2016


I share Richard'a opinions here.

-- Gaby

On Wed, May 11, 2016 at 1:33 AM, Manuel Klimek via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> On Wed, May 11, 2016 at 10:18 AM Eric Liu <ioeric at google.com> wrote:
>
>> I think what we really want are synopses that can compile (i.e. with all
>> necessary #include headers) so that we can run clang matcher on them.
>>
>
> Exactly. Richard, I thought it might make sense for the C++ standard to
> have its code-like snippets in parsable form for verifyability, but if you
> don't think it'd help, we'll need to look for something else.
> Options:
> a) we create an ugly little script that extracts the functions from the
> standard and puts them into a bunch of files with #includes (probably by
> maintaining a side table) and have people use that script + the standard
> b) we just one-time create our own table and try to maintain it (perhaps
> just as part of the clang repo)
> c) ... ?
>
>
>>
>> On Wed, May 11, 2016 at 2:50 AM Richard Smith via cfe-dev <
>> cfe-dev at lists.llvm.org> wrote:
>>
>>> On Tue, May 10, 2016 at 2:22 AM, Manuel Klimek via cfe-dev <
>>> cfe-dev at lists.llvm.org> wrote:
>>>
>>>> On Mon, May 9, 2016 at 7:14 PM Richard Smith via cfe-dev <
>>>> cfe-dev at lists.llvm.org> wrote:
>>>>
>>>>> The below is the sort of thing I'd suggest. You'll probably need some
>>>>> manual massaging to get the extraction exactly right, though.
>>>>>
>>>>
>>>> Would you be generally open to the idea of having the standard maintain
>>>> a more parsable form of the definitions, and including them back into the
>>>> tex file?
>>>>
>>>
>>> The only supported use of the sources on github are to allow the C++
>>> project editor to produce working drafts and standards. They're on github
>>> as a convenience to contributors to the C++ standardization process, and
>>> could go away or change format or layout or anything else, at any time, if
>>> we find a better process. On that basis, it doesn't make a lot of sense to
>>> me for the layout of the standard's sources to be driven by external
>>> concerns like this one.
>>>
>>> If there's some changes you want, and you can make that change in a way
>>> that's aligned with making the sources better as a vehicle for maintaining
>>> or producing a standard / working draft, then that's probably the best path
>>> forward. For instance, a change that adds a different kind of LaTeX
>>> environment around synopsis blocks, providing higher-level semantic markup,
>>> would generally be positive for the standard sources and would help you
>>> extract the parts you need.
>>>
>>> It's not clear to me what benefit there would be to the standard sources
>>> if we separated out these synopses into separate files, and it would make
>>> our current organizational system (one .tex file per top-level clause)
>>> non-uniform.
>>>
>>> Or do you think that will increase the amount of maintenance work too
>>>> much?
>>>>
>>>>
>>>>> Also, the synopses do not typically include class definitions, just a
>>>>> "class X;" style declaration, so if that's a problem for you then you'll
>>>>> need to do a bit more work to extract those too.
>>>>>
>>>> Generally, we need all symbols users might want to use, and which
>>>> headers they are defined in.
>>>>
>>>
>>> It might be easier to extract this from the index of library names
>>> rather than from the synopses (although you may need to insert some markers
>>> to indicate which headers contain each library name -- it would be useful
>>> to include that information in the index too, which would justify the cost
>>> of maintaining those markers in the standard text).
>>>
>>> On 9 May 2016 8:51 a.m., "Kim Gräsman" <cfe-dev at lists.llvm.org> wrote:
>>>>>
>>>>>> 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
>>>>>> _______________________________________________
>>>>>> cfe-dev mailing list
>>>>>> cfe-dev at lists.llvm.org
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>>>>
>>>>> _______________________________________________
>>>>> cfe-dev mailing list
>>>>> cfe-dev at lists.llvm.org
>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>>>
>>>>
>>>> _______________________________________________
>>>> cfe-dev mailing list
>>>> cfe-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>>
>>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>
>>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160511/2ae2c885/attachment.html>


More information about the cfe-dev mailing list