Skip to content

robertoraggi/cplusplus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A compiler front end for the C++ language

cxx-frontend is a work-in-progress compiler frontend for C++26 and C23

The compiler frontend is designed to be a powerful tool for developers, enabling them to parse, analyze, and modify C++ source code. This project aims to provide a robust foundation for building a complete C++ frontend, staying up-to-date with the latest language features and standards.

The API Reference is available at https://robertoraggi.github.io/cplusplus/docs/

Changelog and What's New

For updates, improvements, and recent features in cxx-frontend, please consult the Changelog.

Key Features

  • Syntax Analysis: APIs to scan, preprocess, parse, and inspect the syntax of source code, making it a versatile tool for various code analysis tasks.

  • Multi-Language Support: In addition to C++, the library provides APIs for TypeScript and JavaScript.

  • C++-26 and C23 Support: Latest language enhancements, syntax, and features (WIP).

Playground

The playground uses the Monaco Editor to demonstrate how to create a syntax checker and navigate the Abstract Syntax Tree (AST).

https://robertoraggi.github.io/cplusplus/

Native Build and CLI tools

On Linux, macOS and Windows:

install the python packages required to run the unit tests (optional)

uv sync && source .venv/bin/activate

configure the source code

cmake --preset default

build

cmake --build build

run the unit tests

cd build
ctest --progress

Dump the AST to stdout

 ./build/src/frontend/cxx tests/manual/source.cc -ast-dump

Build the npm package (requires docker)

prepare the package

npm ci

compile WASM and TypeScript code

npm run build:cxx-frontend

Build for WASM/WASI (requires docker)

npm ci
npm run build:wasi

run the C++ front end CLI tool using wasmtime

wasmtime \
  --mapdir=/::build.wasi/install \
  --mapdir tests::tests \
  build.wasi/install/usr/bin/cxx.wasm -- \
  tests/manual/source.cc -ast-dump

Installing from npm

To integrate the latest stable version of the C++ Compiler Frontend bindings into your project, you can install them from npm:

npm install cxx-frontend

Once installed, you can use the bindings in your Node.js or web projects as needed.

Getting Started Using Example Projects

These projects are pre-configured and serve as starting points for various use cases.

For Node.js

npx degit robertoraggi/cplusplus/templates/cxx-parse cxx-parse
cd cxx-parse
npm install
node .

For web-based applications, use these commands to clone, set up, and start a development server:

npx degit robertoraggi/cplusplus/templates/cxx-browser-esm-vite cxx-browser-esm-vite
cd cxx-browser-esm-vite
npm install
npm run dev

License

Copyright (c) 2025 Roberto Raggi roberto.raggi@gmail.com

Licensed under the MIT license.