From 04d71e2c99c208d2b4465aa1009f7e5147537c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Sch=C3=B6ne?= <rene.schoene@tu-dresden.de> Date: Wed, 21 Oct 2020 12:02:02 +0000 Subject: [PATCH] Resolve "Add GitLab Pages" --- .gitlab-ci.yml | 13 +++ pages/.gitignore | 1 + pages/Command-Line-Arguments.rst | 13 +++ pages/Makefile | 20 ++++ pages/Supported-Relations.rst | 23 +++++ pages/Using.rst | 38 +++++++ pages/conf.py | 65 ++++++++++++ pages/images/relast-process.png | Bin 0 -> 15896 bytes pages/index.rst | 23 +++++ pages/make.bat | 35 +++++++ pages/publications.rst | 163 +++++++++++++++++++++++++++++++ 11 files changed, 394 insertions(+) create mode 100644 pages/.gitignore create mode 100644 pages/Command-Line-Arguments.rst create mode 100644 pages/Makefile create mode 100644 pages/Supported-Relations.rst create mode 100644 pages/Using.rst create mode 100644 pages/conf.py create mode 100644 pages/images/relast-process.png create mode 100644 pages/index.rst create mode 100644 pages/make.bat create mode 100644 pages/publications.rst diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b6bf485..e5a30e5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,7 @@ stages: - build - test - jar +- deploy build: image: openjdk:8 @@ -41,3 +42,15 @@ jar: artifacts: paths: - "/builds/jastadd/*/build/libs/*relast*.jar" + +pages: + image: python:3.7-alpine + stage: deploy + script: + - pip install -U sphinx sphinx-rtd-theme recommonmark sphinxemoji sphinx-markdown-tables + - sphinx-build -b html pages/ public + artifacts: + paths: + - public + only: + - master diff --git a/pages/.gitignore b/pages/.gitignore new file mode 100644 index 0000000..69fa449 --- /dev/null +++ b/pages/.gitignore @@ -0,0 +1 @@ +_build/ diff --git a/pages/Command-Line-Arguments.rst b/pages/Command-Line-Arguments.rst new file mode 100644 index 0000000..1711faf --- /dev/null +++ b/pages/Command-Line-Arguments.rst @@ -0,0 +1,13 @@ +Supported command-line options +============================== + +--ast print AST (ignores quiet option) +--file write output to files <filename>Gen.ast and <filename>Gen.jadd +--grammarName name of the generated grammar and aspect (without file extension) +--jastAddList set the name of the List type in JastAdd (has to match the option '--List' or its default List) +--listClass determine the class name of the nonterminal reference list +--quiet do not output anything on stdout +--resolverHelper create a subtype for each type containing a string that can be used to resolve the type later +--serializer generate a (de-)serializer (allowed values: jackson, jackson-json-pointer, jackson-manual-references) +--useJastAddNames generate names in the form of addX, removeX and setX. If omitted, the default, original naming scheme resulting in addToX, removeFromX and setX will be used. +--version print version and exit diff --git a/pages/Makefile b/pages/Makefile new file mode 100644 index 0000000..d4bb2cb --- /dev/null +++ b/pages/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/pages/Supported-Relations.rst b/pages/Supported-Relations.rst new file mode 100644 index 0000000..2319257 --- /dev/null +++ b/pages/Supported-Relations.rst @@ -0,0 +1,23 @@ +Supported relations +=================== + +.. code:: Java + + // Directed relations + A.b -> B; + A.b? -> B; + A.bs* -> B; + B <- A.b ; + B <- A.b? ; + B <- A.bs*; + + // Bidirectional relations + A.b <-> B.a; + A.b <-> B.a?; + A.b <-> B.as*; + A.b? <-> B.a; + A.b? <-> B.a?; + A.b? <-> B.as*; + A.bs* <-> B.a; + A.bs* <-> B.a?; + A.bs* <-> B.as*; diff --git a/pages/Using.rst b/pages/Using.rst new file mode 100644 index 0000000..bfd7734 --- /dev/null +++ b/pages/Using.rst @@ -0,0 +1,38 @@ +Using Relational RAGs +===================== + +The Relational RAGs preprocessor takes a ``.relast`` file as input comprising AST rules and relations. It produces files that afterwards are processed by JastAdd_ to generated Java code. +To use it in your project, build the JAR file running + +.. code:: Bash + + ./gradlew jar + +This will produce ``build/libs/relast.jar``. Copy it to your project and extend your build config (preferably Gradle_) with the following: + +.. code:: Groovy + + task preprocess(type: JavaExec) { + group = 'Build' + main = "-jar" + args = [ + "libs/relast.jar", + "./src/main/jastadd/main.relast", + "--listClass=RefList", + "--jastAddList=JastAddList", + "--file" + ] + + inputs.files file("./src/main/jastadd/main.relast") + outputs.files file("./src/main/jastadd/mainGen.ast"), file("./src/main/jastadd/mainGen.jadd") + } + +Note that you may have to change + +- the directory of ``relast.jar`` +- the ``.relast`` file(s) both as argument(s) and input file(s) +- the output files +- parameters of RelAST (in this case, the list classes were renamed), the following table shows the supported ones + +.. _JastAdd: http://jastadd.org/ +.. _Gradle: https://gradle.org/ diff --git a/pages/conf.py b/pages/conf.py new file mode 100644 index 0000000..df20528 --- /dev/null +++ b/pages/conf.py @@ -0,0 +1,65 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'Relational RAGs' +copyright = '2020, Johannes Mey, René Schöne, Görel Hedin, Emma Söderberg, Thomas Kühn, Niklas Fors, Jesper Öqvist, Uwe Aßmann' +author = 'Johannes Mey, René Schöne, Görel Hedin, Emma Söderberg, Thomas Kühn, Niklas Fors, Jesper Öqvist, Uwe Aßmann' + +# The full version, including alpha/beta/rc tags +release = '0.3.0' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx_rtd_theme', + 'recommonmark', + 'sphinxemoji.sphinxemoji', + 'sphinx_markdown_tables' +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +sphinxemoji_style = 'twemoji' + +html_theme_options = { + 'navigation_depth': 4, +} diff --git a/pages/images/relast-process.png b/pages/images/relast-process.png new file mode 100644 index 0000000000000000000000000000000000000000..e3dda55dbd8e7a3bcb98207e8c81f52f4a682d10 GIT binary patch literal 15896 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 literal 0 HcmV?d00001 diff --git a/pages/index.rst b/pages/index.rst new file mode 100644 index 0000000..a529404 --- /dev/null +++ b/pages/index.rst @@ -0,0 +1,23 @@ +.. Relational RAGs documentation master file, created by + sphinx-quickstart on Tue Oct 20 11:41:47 2020. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Relational RAGs documentation +============================= + +.. toctree:: + :caption: Contents: + :hidden: + + Using.rst + Command-Line-Arguments.rst + Supported-Relations.rst + publications.rst + +.. image:: images/relast-process.png + :alt: RelAST process + +See `releases page`_ for the latest version. + +.. _releases page: https://git-st.inf.tu-dresden.de/jastadd/relational-rags/-/releases diff --git a/pages/make.bat b/pages/make.bat new file mode 100644 index 0000000..922152e --- /dev/null +++ b/pages/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/pages/publications.rst b/pages/publications.rst new file mode 100644 index 0000000..038cc59 --- /dev/null +++ b/pages/publications.rst @@ -0,0 +1,163 @@ +Publications +============ + +Main publication at SLE'18 +-------------------------- + +.. raw:: html + + <link rel="stylesheet" + href="https://dl.acm.org/specs/products/acm/widgets/authorizer/scss/style.css" /> + <style> + .multi-search { + min-height: 0; + padding: 0px; + } + .issue-item { + } + </style> + <div class="multi-search multi-search--issue-item"> + <div class="issue-item clearfix"> + <div class="issue-item__citation"> + <div class="issue-heading">chapter</div> + </div> + <div class="issue-item__content"> + <h5 class="issue-item__title"><a + href="https://dl.acm.org/doi/10.1145/3276604.3276616?cid=81318498502">Continuous + model validation using reference attribute + grammars</a></h5> + + <ul class="rlist--inline loa truncate-list" + title="list of authors" data-lines="2"> + <li><a href="https://dl.acm.org/profile/99659180755" + title="Johannes Mey"><img class="author-picture" + src="https://dl.acm.org/pb-assets/icons/DOs/default-profile-1543932446943.svg" + alt="Johannes Mey profile image" /><span>Johannes + Mey</span></a><span + class="loa_author_inst hidden"> + <p data-doi="10.1145/contrib-99659180755">TU + Dresden, Germany</p> + </span><span>, </span></li> + <li><a href="https://dl.acm.org/profile/81318498502" + title="René Schöne"><img class="author-picture" + src="https://dl.acm.org/do/10.1145/contrib-81318498502/rel-imgonly/author-rene.jpg" + alt="René Schöne profile image" /><span>René + Schöne</span></a><span + class="loa_author_inst hidden"> + <p data-doi="10.1145/contrib-81318498502">TU + Dresden, Germany</p> + </span><span>, </span></li> + <li><a href="https://dl.acm.org/profile/81100270533" + title="Görel Hedin"><img class="author-picture" + src="https://dl.acm.org/do/10.1145/contrib-81100270533/rel-imgonly/81100270533.jpg" + alt="Görel Hedin profile image" /><span>Görel + Hedin</span></a><span + class="loa_author_inst hidden"> + <p data-doi="10.1145/contrib-81100270533">Lund + University, Sweden</p> + </span><span>, </span></li> + <li><a href="https://dl.acm.org/profile/81482659289" + title="Emma Söderberg"><img + class="author-picture" + src="https://dl.acm.org/pb-assets/icons/DOs/default-profile-1543932446943.svg" + alt="Emma Söderberg profile image" /><span>Emma + Söderberg</span></a><span + class="loa_author_inst hidden"> + <p data-doi="10.1145/contrib-81482659289">Lund + University, Sweden</p> + </span><span>, </span></li> + <li><a href="https://dl.acm.org/profile/81100443648" + title="Thomas Kühn"><img class="author-picture" + src="https://dl.acm.org/pb-assets/icons/DOs/default-profile-1543932446943.svg" + alt="Thomas Kühn profile image" /><span>Thomas + Kühn</span></a><span + class="loa_author_inst hidden"> + <p data-doi="10.1145/contrib-81100443648">TU + Dresden, Germany</p> + </span><span>, </span></li> + <li><a href="https://dl.acm.org/profile/82459076457" + title="Niklas Fors"><img class="author-picture" + src="https://dl.acm.org/pb-assets/icons/DOs/default-profile-1543932446943.svg" + alt="Niklas Fors profile image" /><span>Niklas + Fors</span></a><span + class="loa_author_inst hidden"> + <p data-doi="10.1145/contrib-82459076457">Lund + University, Sweden</p> + </span><span>, </span></li> + <li><a href="https://dl.acm.org/profile/82858857457" + title="Jesper Öqvist"><img + class="author-picture" + src="https://dl.acm.org/pb-assets/icons/DOs/default-profile-1543932446943.svg" + alt="Jesper Öqvist profile image" /><span>Jesper + Öqvist</span></a><span + class="loa_author_inst hidden"> + <p data-doi="10.1145/contrib-82858857457">Lund + University, Sweden</p> + </span><span>, </span></li> + <li><a href="https://dl.acm.org/profile/81100444066" + title="Uwe Aßmann"><img class="author-picture" + src="https://dl.acm.org/pb-assets/icons/DOs/default-profile-1543932446943.svg" + alt="Uwe Aßmann profile image" /><span>Uwe + Aßmann</span></a><span + class="loa_author_inst hidden"> + <p data-doi="10.1145/contrib-81100444066">TU + Dresden, Germany</p> + </span></li> + </ul> + + <div class="issue-item__detail"><span>October + 2018</span><span class="dot-separator">pp 70-82 + </span><span><a + href="https://doi.org/10.1145/3276604.3276616" + class="issue-item__doi dot-separator">https://doi.org/10.1145/3276604.3276616</a></span> + </div> + <div data-lines='4' + class="issue-item__abstract truncate-text"> + <div class="issue-item__abstract truncate-text" + data-lines="4"> + + <p>Just like current software systems, models are + characterised by increasing complexity + and rate of change. Yet, these models only + become useful if they can be continuously + evaluated and validated. To achieve sufficiently + low response times for large ... + </p> + </div> + </div> + </div> + </div> + </div> + <br/> + +Follow-Up publication in JCL +---------------------------- + +**Relational reference attribute grammars: Improving continuous model validation** + +Johannes Mey |a|, René Schöne |a|, Görel Hedin |b|, Emma Söderberg |b|, Thomas Kühn |a|, Niklas Fors |b|, Jesper Öqvist |b|, Uwe Aßmann |a| + +- |a| Technische Universitãt Dresden, Germany +- |b| Lund University, Sweden + +Received 31 March 2019, Revised 1 November 2019, Accepted 20 December 2019, Available online 20 January 2020. + +https://doi.org/10.1016/j.cola.2019.100940 + +.. |a| replace:: :sup:`a` +.. |b| replace:: :sup:`b` + + +Publications using Relational RAGs +---------------------------------- + +- `Subpage on RagConnect`_ +- Götz, Sebastian, Johannes Mey, René Schöne, and Uwe Aßmann. **“A JastAdd- and ILP-Based Solution to the Software-Selection and Hardware-Mapping-Problem at the TTC 2018.”** In 11th Transformation Tool Contest, 2018. +- Götz, Sebastian, Johannes Mey, René Schöne, and Uwe Aßmann. **“Quality-Based Software-Selection and Hardware-Mapping as Model Transformation Problem.”** In 11th Transformation Tool Contest, 2018. +- Mey, Johannes, René Schöne, Christopher Werner, and Uwe Aßmann. **“Transforming Truth Tables to Binary Decision Diagrams Using Relational Reference Attribute Grammars.”** In Proceedings of the 12th Transformation Tool Contest (TTC 2019), 2019. +- Schöne, René, and Johannes Mey. **“A JastAdd-Based Solution to the TTC 2018 Social Media Case.”** In 11th Transformation Tool Contest, 2018. +- Schöne, René, Johannes Mey, Boqi Ren, and Uwe Aßmann. **“Bridging the Gap between Smart Home Platforms and Machine Learning Using Relational Reference Attribute Grammars.”** In Proceedings of the 14th International Workshop on Models\@run.Time, 533–42. Munich, 2019. https://doi.org/10.1109/MODELS-C.2019.00083 +- Mey, Johannes, Thomas Kühn, René Schöne, and Uwe Aßmann. **“Reusing Static Analysis across Different Domain-Specific Languages Using Reference Attribute Grammars.”** Programming 4, no. 3 (February 17, 2020). https://doi.org/10.22152/programming-journal.org/2020/4/15 + + +.. _Subpage on RagConnect: http://connector.relational-rags.eu/ -- GitLab