diff --git a/build.gradle b/build.gradle
index 20e14f5cc91982f1952861dd75d633be9f46e5c5..ac60ed0abe941fe6e33e9b18fb3b4ff4c376240a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -19,9 +19,15 @@ repositories {
     }
 }
 
+configurations {
+    grammar2uml
+    relast
+}
+
 dependencies {
     implementation group: 'com.flipkart.zjsonpatch', name: 'zjsonpatch', version: "${json_patch_version}"
     implementation group: 'io.swagger.parser.v3', name: 'swagger-parser', version: "${swagger_parser_version}"
+    grammar2uml group: 'de.tudresden.inf.st', name: 'grammar2uml', version: "${grammar2uml_version}"
 
     testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "${junit_jupiter_version}"
     testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: "${junit_jupiter_version}"
@@ -84,6 +90,19 @@ def relastOutputFiles = [
         "src/gen/jastadd/OpenAPISpecification.ast",
         "src/gen/jastadd/OpenAPISpecification.jadd"
 ]
+def grammarDiagramFile = './src/gen/resources/diagrams/grammar/openapiRelast.png'
+
+
+task generateGrammarDiagrams(type: JavaExec) {
+    group = 'Documentation'
+    classpath = configurations.grammar2uml
+
+    args "--output=${grammarDiagramFile}", '--defaultFolders'
+    args relastInputFiles
+
+    inputs.files relastInputFiles
+    outputs.files file(grammarDiagramFile)
+}
 
 task relast(type: JavaExec) {
     classpath = files("libs/relast.jar")
diff --git a/gradle.properties b/gradle.properties
index 7009aabd1bb194a1cc17038702cf1e62b5f8cb75..c0b50526cb7547533c933897a1db274967747899 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,4 +2,5 @@ json_patch_version = 0.4.11
 swagger_parser_version = 2.0.30
 junit_jupiter_version = 5.7.0
 json_path_version = 2.6.0
-jastaddgradle_version = 1.13.3
\ No newline at end of file
+jastaddgradle_version = 1.13.3
+grammar2uml_version = 0.2.1
\ No newline at end of file