c++: module directive FSM
authorNathan Sidwell <nathan@acm.org>
Tue, 8 Dec 2020 13:03:43 +0000 (05:03 -0800)
committerNathan Sidwell <nathan@acm.org>
Tue, 8 Dec 2020 13:07:30 +0000 (05:07 -0800)
commit76a1719f0ff8e802cd3124ec102da174e5c67f15
treea7a2eca344276782c976eb09fd650032baeb117b
parent0f2da02b2373078e96bb44fe83f5b7fd303414a6
c++: module directive FSM

As mentioned in the preprocessor patches, there's a new kind of
preprocessor directive for modules, and it interacts with the
compiler-proper, as that has to stream in header-unit macro
information (when the directive is an import that names a
header-unit).  This is that machinery.  It's an FSM that inspects the
token stream and does the minimal parsing to detect such imports.
This ends up being called from the C++ parser's tokenizer and from the
-E tokenizer (via a lang hook).  The actual module streaming is a stub
here.

gcc/cp/
* cp-tree.h (module_token_pre, module_token_cdtor)
(module_token_lang): Declare.
* lex.c: Include langhooks.
(struct module_token_filter): New.
* cp-tree.h (module_token_pre, module_token_cdtor)
(module_token_lang): Define.
* module.cc (get_module, preprocess_module, preprocessed_module):
Nop stubs.
gcc/cp/cp-tree.h
gcc/cp/lex.c
gcc/cp/module.cc