diff --git a/.gitmodules b/.gitmodules
index 9f144335..e9ea04f7 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,9 @@
[submodule "game_re/third_party/spdlog"]
path = game_re/third_party/spdlog
url = https://github.com/gabime/spdlog.git
+[submodule "tooling2/third_party/tree-sitter"]
+ path = tooling2/third_party/tree-sitter
+ url = https://github.com/guusw/tree-sitter.git
+[submodule "tooling2/third_party/tree-sitter-cpp"]
+ path = tooling2/third_party/tree-sitter-cpp
+ url = https://github.com/guusw/tree-sitter-cpp.git
diff --git a/java/cparser/.gitignore b/java/cparser/.gitignore
deleted file mode 100644
index 1ff28072..00000000
--- a/java/cparser/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-.class
-target/
\ No newline at end of file
diff --git a/java/cparser/pom.xml b/java/cparser/pom.xml
deleted file mode 100644
index fea56ca6..00000000
--- a/java/cparser/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
- 4.0.0
-
- cparser
- cparser
- 1.0-SNAPSHOT
-
-
-
-
- junit
- junit
- 4.13.2
- test
-
-
-
-
-
- ./src/test/java
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.8.1
-
- 1.8
- 1.8
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.22.2
-
-
- **/ParserTests.java
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/java/cparser/src/main/java/cparser/AST.java b/java/cparser/src/main/java/cparser/AST.java
deleted file mode 100644
index 1890d894..00000000
--- a/java/cparser/src/main/java/cparser/AST.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package cparser;
-
-import java.util.List;
-
-public class AST {
-
- public static class Error {
- public final Span span;
- public final String message;
-
- public Error(Span span, String message) {
- this.span = span;
- this.message = message;
- }
- }
-
- public static class Span {
- public final int startOffset;
- public final int endOffset;
-
- public Span(int startOffset, int endOffset) {
- this.startOffset = startOffset;
- this.endOffset = endOffset;
- }
-
- public Span() {
- this.startOffset = -1;
- this.endOffset = -1;
- }
-
- public boolean isValid() {
- return endOffset > startOffset;
- }
- }
-
- public static class PreprocessorExpression {
- public final Span span;
-
- public PreprocessorExpression(Span span) {
- this.span = span;
- }
- }
-
- public static class Type {
- // The entire type definition, e.g. "byte**"
- public final Span span;
- // the base type name, e.g. byte in "byte* (&value)[20]"
- public final Span baseSpan;
-
- public Type(Span span, Span baseSpan) {
- this.span = span;
- this.baseSpan = baseSpan;
- }
- }
-
- public static class Identifier {
- public final Span span;
-
- public Identifier(Span span) {
- this.span = span;
- }
- }
-
- public static class ArgumentList {
- public final List