Skip to the content.

Parser

Overview

Converts C/C++ source text into a queryable AST. Entry point for all metadata extraction workflows.

Why Use This?

libclang’s API is low-level and stateful. parser encapsulates index creation, translation unit management, and AST traversal into a single-call interface. Parse once, then query the resulting node tree as many times as needed.

Types

Type Description
parser Stateless parser (movable, non-copyable)

Functions

parser()

Default constructor.

parse

Parse source code into an AST.

Signature: std::shared_ptr<node> parse(const std::string& input, const compile_args& args)

Parameters:

Returns: node_ptr to the translation unit root, or nullptr on parse failure

Notes:

Example:

xccmeta::parser parser;
xccmeta::compile_args args = xccmeta::compile_args::modern_cxx();

auto ast = parser.parse(source_code, args);
if (!ast) {
  std::cerr << "Parse failed\n";
  return 1;
}

merge

Merge two ASTs into a single tree.

Signature: std::shared_ptr<node> merge(std::shared_ptr<node> a, std::shared_ptr<node> b, const compile_args& args)

Parameters:

Returns: new root node_ptr containing children from both ASTs

Notes:

Example:

auto ast1 = parser.parse(file1.read(), args);
auto ast2 = parser.parse(file2.read(), args);
auto merged = parser.merge(ast1, ast2, args);