// file : build2/cc/parser.hxx -*- C++ -*- // copyright : Copyright (c) 2014-2019 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef BUILD2_CC_PARSER_HXX #define BUILD2_CC_PARSER_HXX #include #include #include #include namespace build2 { namespace cc { // Extract translation unit information from a preprocessed C/C++ source. // struct token; class lexer; class parser { public: unit parse (ifdstream&, const path& name); private: void parse_import (token&, bool); void parse_module (token&, bool); string parse_module_name (token&); string parse_header_name (token&); public: string checksum; // Translation unit checksum. private: lexer* l_; unit* u_; optional module_marker_; }; } } #endif // BUILD2_CC_PARSER_HXX