CPP-TOOLBOX
Loading...
Searching...
No Matches
cpp_parsing.hpp File Reference
#include <cctype>
#include <cstddef>
#include <iostream>
#include <memory>
#include <unordered_set>
#include <ostream>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <unordered_map>
#include <fstream>
#include <sstream>
#include "sbpt_generated_includes.hpp"

Go to the source code of this file.

Classes

struct  cpp_parsing::ParseResult
 
class  cpp_parsing::CharParser
 
class  cpp_parsing::TransformParser
 
class  cpp_parsing::DecimalLiteralParser
 
class  cpp_parsing::IdentifierParser
 
class  cpp_parsing::OptionalParser
 
class  cpp_parsing::IfThenParser
 
class  cpp_parsing::DeferredParser
 
class  cpp_parsing::OptionalWhitespaceParser
 
class  cpp_parsing::VariableParser
 
class  cpp_parsing::TypeParser
 
class  cpp_parsing::TypeQualifierSequenceParser
 
class  cpp_parsing::LiteralParser
 
class  cpp_parsing::MatchingStringPairParser
 
class  cpp_parsing::MatchingPairParser
 
class  cpp_parsing::NestedStringPairParser
 
class  cpp_parsing::UntilCharParser
 
class  cpp_parsing::CommaSeparatedTupleParser
 
class  cpp_parsing::RepeatingParser
 
class  cpp_parsing::AnyOfParser
 
class  cpp_parsing::SequenceParser
 

Namespaces

namespace  cpp_parsing
 

Typedefs

using cpp_parsing::CharParserPtr = std::shared_ptr<CharParser>
 

Functions

std::string cpp_parsing::truncate (const std::string &s, int cutoff=50)
 
std::string cpp_parsing::get_next_part_of_string (const std::string &input, int start, int lookahead=50)
 
ParseResult cpp_parsing::clean_parse_result (const ParseResult &r)
 
const cpp_parsing::ParseResultcpp_parsing::find_first_by_name (const cpp_parsing::ParseResult *root, const std::string &target)
 
const cpp_parsing::ParseResultcpp_parsing::find_first_name_contains (const cpp_parsing::ParseResult *root, const std::string &substr)
 
void cpp_parsing::collect_by_name (const cpp_parsing::ParseResult *root, const std::string &target, std::vector< const cpp_parsing::ParseResult * > &out)
 
ParseResult cpp_parsing::parse_source_or_header_file (const std::string &source_code_path)
 
std::vector< std::pair< std::string, std::string > > cpp_parsing::bfs_collect_matches (const cpp_parsing::ParseResult *root, const std::vector< std::string > &names)
 
std::string cpp_parsing::node_text (const cpp_parsing::ParseResult *node)
 
std::ostream & cpp_parsing::print_parse_result (std::ostream &os, const ParseResult &result, int indent)
 
std::ostream & cpp_parsing::operator<< (std::ostream &os, const ParseResult &result)
 
CharParserPtr cpp_parsing::optional_whitespace ()
 
CharParserPtr cpp_parsing::identifier ()
 
CharParserPtr cpp_parsing::variable ()
 
CharParserPtr cpp_parsing::base_type ()
 
CharParserPtr cpp_parsing::type_qualifier_sequence ()
 
CharParserPtr cpp_parsing::until_char (std::vector< char > target_chars, bool inclusive, bool ignore_in_strings_and_chars, const std::string &name)
 
CharParserPtr cpp_parsing::literal (const std::string &s)
 
std::vector< CharParserPtrcpp_parsing::create_literal_parsers (std::vector< std::string > literals)
 
CharParserPtr cpp_parsing::matching_string_pair (const std::string &name, std::string left, std::string right)
 
CharParserPtr cpp_parsing::nested_string_pair (CharParserPtr parser, const std::string &name, std::string left, std::string right)
 
CharParserPtr cpp_parsing::repeating (CharParserPtr parser, const std::string &name)
 
CharParserPtr cpp_parsing::optional (CharParserPtr parser, const std::string &name)
 
CharParserPtr cpp_parsing::deferred ()
 
CharParserPtr cpp_parsing::if_then (std::shared_ptr< CharParser > condition_parser, std::shared_ptr< CharParser > then_parser, const std::string &name)
 
CharParserPtr cpp_parsing::any_of (std::vector< CharParserPtr > parsers, const std::string &name)
 
CharParserPtr cpp_parsing::not_any_of (std::shared_ptr< CharParser > inner, std::unordered_set< std::string > forbidden, std::string name)
 
CharParserPtr cpp_parsing::sequence (std::vector< CharParserPtr > parsers, const std::string &name)
 
void cpp_parsing::log_start_of_parser (const std::string &name, const std::string &input, size_t start)
 
void cpp_parsing::test_parser (const std::string &input, const CharParserPtr &parser)
 
std::vector< CharParserPtrcpp_parsing::whitespace_between (const std::vector< CharParserPtr > &base_parsers)
 
CharParserPtr cpp_parsing::comma_separated_sequence_parser (CharParserPtr element_parser)
 
std::string cpp_parsing::remove_comments_from_file (const std::string &filename)
 
std::unordered_map< std::string, std::vector< std::string > > cpp_parsing::collect_matches_by_parser_name (const ParseResult &result, const std::vector< std::string > &target_names)
 
CharParserPtr cpp_parsing::optionally_namespaced_identifier ()
 
CharParserPtr cpp_parsing::optional_reference_or_pointer ()
 
CharParserPtr cpp_parsing::add_optional_type_surroundings (CharParserPtr base_parser)
 
CharParserPtr cpp_parsing::get_templated_type_parser ()
 
CharParserPtr cpp_parsing::lambda_type_parser ()
 
std::vector< CharParserPtrcpp_parsing::make_operator_literals ()
 
std::unordered_map< std::string, std::vector< std::string > > cpp_parsing::get_parser_name_to_matches_for_source_file (const std::string &source_code_path)
 
std::vector< std::string > cpp_parsing::extract_top_level_functions (const std::string &source_code_path)
 
std::vector< std::string > cpp_parsing::extract_top_level_function_declarations (const std::string &header_code_path)
 
std::vector< std::string > cpp_parsing::extract_top_level_classes (const std::string &source_code_path)
 
std::vector< std::string > cpp_parsing::extract_top_level_enum_classes (const std::string &source_code_path)
 
void cpp_parsing::test ()
 

Variables

Logger cpp_parsing::logger ("cpp_parsing")
 
const std::unordered_set< std::string > cpp_parsing::cpp_built_in_types
 
const std::vector< std::string > cpp_parsing::cpp_sign_specifier = {"unsigned", "signed"}
 
const std::vector< std::string > cpp_parsing::cpp_size_specifier = {"short", "long", "long long"}
 
const std::unordered_set< std::string > cpp_parsing::access_specifiers = {"public", "protected", "private"}
 
const std::vector< std::string > cpp_parsing::overloadable_operators
 
const std::unordered_set< std::string > cpp_parsing::cpp_keywords
 
CharParserPtr cpp_parsing::macro_if_statement = sequence({})
 
CharParserPtr cpp_parsing::system_include_parser
 
CharParserPtr cpp_parsing::local_include_parser
 
CharParserPtr cpp_parsing::default_value_for_parameter_suffix_parser
 
CharParserPtr cpp_parsing::full_non_recursive_type = add_optional_type_surroundings(optionally_namespaced_identifier())
 
CharParserPtr cpp_parsing::type = not_any_of(add_optional_type_surroundings(get_templated_type_parser()), cpp_keywords)
 
CharParserPtr cpp_parsing::assignment_parser
 
CharParserPtr cpp_parsing::declaration_parser
 
CharParserPtr cpp_parsing::parameter_parser
 
CharParserPtr cpp_parsing::optional_parameter_sequence
 
CharParserPtr cpp_parsing::optional_parameters
 
CharParserPtr cpp_parsing::parameter_tuple_parser
 
std::vector< CharParserPtrcpp_parsing::operator_literals = make_operator_literals()
 
CharParserPtr cpp_parsing::optionally_namespaced_variable_parser
 
CharParserPtr cpp_parsing::function_invocation
 
CharParserPtr cpp_parsing::initializer_list_parser
 
CharParserPtr cpp_parsing::constructor_def_parser
 
CharParserPtr cpp_parsing::base_function_signature_parser
 
CharParserPtr cpp_parsing::function_signature_parser
 
CharParserPtr cpp_parsing::function_def_parser
 
CharParserPtr cpp_parsing::function_decl_parser
 
const std::vector< CharParserPtrcpp_parsing::access_specifier_parsers
 
const CharParserPtr cpp_parsing::access_specifier_parser = any_of(access_specifier_parsers, "access_specifier")
 
const CharParserPtr cpp_parsing::class_inheritance_parser
 
CharParserPtr cpp_parsing::class_def_parser
 
CharParserPtr cpp_parsing::class_def_parser_good
 
CharParserPtr cpp_parsing::struct_def_parser_good
 
CharParserPtr cpp_parsing::enum_class_def_parser
 
CharParserPtr cpp_parsing::using_statement_parser
 
CharParserPtr cpp_parsing::struct_def_parser
 
CharParserPtr cpp_parsing::source_file_body_parser
 
CharParserPtr cpp_parsing::source_file_namespace_body_parser
 
CharParserPtr cpp_parsing::local_or_system_includes_parser
 
CharParserPtr cpp_parsing::source_file_parser
 
CharParserPtr cpp_parsing::header_file_parser