aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/antlr4-c3/README-cpp.md
blob: 6614ca64e1d8fa6914d66b62d379d21619cd74fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# ANTLRv4 C3 C++ Port

## About

This is a port of the `antlr4-c3` library to `C++`.

Please see the parent [README.md](../../readme.md) for an explanation of the library and for examples.

## Port features

1. Only `CodeCompletionCore` was ported.

2. Supports cancellation for `collectCandidates` method via timeout or flag.

## Requirements

- [C++ 20 standard](https://en.cppreference.com/w/cpp/20) to compile sources.

- [ANTLRv4 C++ Runtime](https://github.com/antlr/antlr4/tree/4.13.1/runtime/Cpp) to compile sources.

- [CMake 3.7](https://cmake.org/cmake/help/latest/release/3.7.html) to build project.

- [ANTLRv4 Tool](https://www.antlr.org/download.html) to build tests.

- [Google Test](https://github.com/google/googletest) to build tests.

## Usage

Currently, there are no other ways to adding C++ port as a dependency other than by copying and pasting the [directory with project's source code](./source/antlr4-c3) into your own project.

## Build & Run

Actual build steps are available at [CMake GitHub Workflow](../../.github/workflows/cmake.yml). 

`ANTLRv4` Runtime and Tool as well as other dependecnies will be downloaded during `CMake` configiration stage.

```bash
# Clone antlr4-c3 repository and enter C++ port directory
git clone git@github.com:mike-lischke/antlr4-c3.git
cd antlr4-c3/ports/cpp # Also a workspace directory for VSCode

# Create and enter the build directory
mkdir build && cd build

# Configure CMake build
# - ANTLR4C3_DEVELOPER should be enabled if you are going to run tests
# - CMAKE_BUILD_TYPE Asan and Tsan are supported too
cmake -DANTLR4C3_DEVELOPER=ON -DCMAKE_BUILD_TYPE=Release ..

# Build everything
make

# Running tests being at build directory
(make && cd test && ctest)
```

## Contributing

We recommend using [VSCode](https://code.visualstudio.com/) with [clangd extension](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd) as an IDE. There are some configuration files for launching tests in debug mode, `clangd` configuration and more.