Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/dev' into nokeyword-rules
Browse files Browse the repository at this point in the history
  • Loading branch information
luepges committed Jan 31, 2025
2 parents 984d0dc + b98d0fa commit f6df045
Show file tree
Hide file tree
Showing 146 changed files with 3,303 additions and 3,669 deletions.
36 changes: 36 additions & 0 deletions .github/workflows/call_montiverse_branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# (c) https://github.com/MontiCore/monticore
name: "Trigger the MontiVerse (workflow-call)"

on:
workflow_call:
inputs:
project:
description: 'The (internal) name for this project, as defined within the MontiVerse job'
type: string
required: true
secrets:
MONTIVERSE_TRIGGER_TOKEN:
required: true
MONTIVERSE_ACCESS_TOKEN:
required: true


jobs:
# Run the MontiVerse pipeline (tests this change on a suite of projects)
# The MontiVerse is a suite of projects, which are not build & tested with the given changes on a branch
trigger-montiverse:
runs-on: ubuntu-latest
steps:
- name: Extract Branch Name
# We have to remove the refs/heads/ prefix from the branch which called this action
run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
- name: Trigger MontiVerse
# Then actually trigger the MontiVerseCI projects pipeline
uses: digital-blueprint/gitlab-pipeline-trigger-action@c81ead300bf664f76245d816268c4a1b4bed2604 # @v1.2.0
with:
host: 'git.rwth-aachen.de'
trigger_token: ${{ secrets.MONTIVERSE_TRIGGER_TOKEN }}
access_token: ${{ secrets.MONTIVERSE_ACCESS_TOKEN }} # Access is required to show the status
id: '91803' # MontiVerseCI project id
ref: 'main'
variables: '{"${{inputs.project}}_BRANCH":"${{env.BRANCH_NAME}}", "${{inputs.project}}_PROJECT":"${{ github.event.repository.full_name }}"}'
32 changes: 32 additions & 0 deletions .github/workflows/call_trigger_downstream.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# (c) https://github.com/MontiCore/monticore
name: "Trigger the downstream projects (workflow-call)"

on:
workflow_call:
inputs:
projects:
# An exemplary with-usage can look like the following:
# projects: "['MontiCore/xml', 'MontiCore/json', 'MontiCore/ucd', 'MontiCore/automaton']"
description: 'The JSON-projects to trigger'
type: string
required: true
secrets:
DOWNSTREAM_PAT:
required: true


jobs:
# Trigger all downstream, as given by the projects inputs
trigger-github-downstream:
runs-on: ubuntu-latest
strategy:
matrix:
project: ${{ fromJSON(inputs.projects) }}

steps:
- name: Trigger ${{ matrix.project }}
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.DOWNSTREAM_PAT }}
repository: ${{ matrix.project }}
event-type: trigger_after_upstream_deploy
80 changes: 80 additions & 0 deletions 00.org/Explanations/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,79 @@

# Release Notes

## MontiCore 7.7.0
released: 20.01.2025

### Additions
* grammars
* SIUnits, SIUnitLiterals, SIUnitTypes4Math, SIUnitTypes4Computing
(ported from SIUnit project)
* TypeParameters for generics
* Stream constructor for StreamExpressions
* Symbols
* DeSer has access to outer scope while deserializing
* CoCos
* new CoCo QualifiedTypeHasNoTypeParameters
* new CoCo TypeParameterNoCyclicInheritance
* new CoCo TypeParametersHaveUniqueNames
* TypeCheck
* initial support for generics/type inference
* TypeCheck3 static delegate with implementation MapBasedTypeCheck3
* new class SymTypeOf(NumericWith)SIUnit
* new class SymTypeSourceInfo to reference symbols
* new class SymTypeCollectionVisitor to collect sub-SymTypeExpressions
* new class SymTypeExpressionCalculator to sort SymTypeExpressions
* new class SymTypePredicateVisitor to check predicates over STEs
* new class TypeVisitorOperatorCalculator to reuse operator calculations
* Tests
* Junit 5.10.3 for tests and parametrization
* Templates
* introduced scopes for template inclusion
* CD2Java support for Javadocs

### Changes
* grammars
* JavaLight uses TypeParameters
* updated MLC models
* AST
* deprecated definingSymbol (TypeCheck1)
* CoCos
* LiteralAssignmentMatchesRegExExpressionCoCo uses TypeCheck3
* ExpressionStatementIsValid uses TypeCheck3
* VarDeclarationInitializationHasCorrectType uses TypeCheck3
* Updated Gradle version to 7.6.4
* Pretty Printers
* Removed (deprecated) handwritten pretty printers
* Replaced handwritten usage of pretty printers with the generated printers
* Logger has changed to a log-hook based logging infrastructure
* Reporting
* Removed reporting of unused templates
* Adapted reporting to the new Logger
* TypeCheck
* deprecated IDerive/ISynthesize
* deprecated TypeCheckResult
* deprecated ITypeCalculator
* better error messages
* Parser
* Further improved readability of parse errors
* Refactored the parser generation to increase readability
* Usage of a two-phased parser approach (using ParseVisitors to create the AST)
* Updated the Getting Started document
* The development of MontiCore now occurs on GitHub
* Exposition of internal objects of the DSTL-transformation generation
* GlobalExtensionManagement: extend template replacement
* monticore-generator
* Removed GrammarFamily
* Removed dependencies to bootstrap-jars

### Fixes
* Symbols
* Deserialization uses outer scope
* MCPath don't throw PatternSyntaxException
* Pretty Printer generation of constant groups with usage names
* Memory exhaustion of the Gradle plugin
* compatibility with Gradle's build and configuration cache

## MontiCore 7.6.0
released: --to be determined--

Expand Down Expand Up @@ -56,6 +129,13 @@ released: --to be determined--
* Added TypeSystem3 markdown documentation
* Expressions:
* ASTRule: LambdaBodys have a return type
* Model Interpreters:
* General runtime infrastructure
* Generative support for compositional interpreters
* Interpreter library for:
* Assignment expressions
* Common expressions
* Common Literals

### Changes
* Findings of parse errors now contain additional context
Expand Down
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,20 @@

# MontiCore - Language Workbench and Development Tool Framework

---

**NEWS**:
<div align="center">
<a href="https://monticore.github.io/monticore/docs/MontiCoreSymposium/" target="_blank">
<img src="https://github.com/MontiCore/monticore/raw/dev/docs/docs/MC_Symp_Banner.png">
</a>
</div>

* ISW Stuttgart and RWTH Aachen organize the third **[MontiCore Symposium 2025](docs/MontiCoreSymposium.md)** March 23 - March 26 in Gemünd, Germany
* Deadline for submission of papers or abstracts: January, 10th.

---

[MontiCore](https://www.monticore.de) is a language workbench for the efficient
development of domain-specific languages (DSLs). It processes an extended
grammar format which defines the DSL and generates Java components for processing
Expand Down
6 changes: 0 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,6 @@ task buildMC {
}

buildMC.dependsOn(gradle.includedBuilds*.task(':build'))
buildMC.dependsOn(gradle.includedBuilds*.task(':monticore-runtime-fix:build'))

/**
* Assembles the core projects, i.e. the generator, runtime and grammar library.
Expand All @@ -130,8 +129,6 @@ task assembleMC {
}

assembleMC.dependsOn(gradle.includedBuilds*.task(':assemble'))
assembleMC.dependsOn(gradle.includedBuilds*.task(':monticore-runtime-fix:assemble'))


/**
* Executes JUnit tests of the core projects, i.e. the generator, runtime and grammar library.
Expand All @@ -149,7 +146,6 @@ task testMC {
}

testMC.dependsOn(gradle.includedBuilds*.task(':test'))
testMC.dependsOn(gradle.includedBuilds*.task(':monticore-runtime-fix:test'))

/**
* Publishes the jars of the core projects, i.e. the generator, runtime and grammar library
Expand All @@ -170,7 +166,6 @@ task deployMC {
}

deployMC.dependsOn(gradle.includedBuilds*.task(':publish'))
deployMC.dependsOn(gradle.includedBuilds*.task(':monticore-runtime-fix:publish'))

/**
* Publishes the jars of the core projects, i.e. the generator, runtime and grammar library
Expand All @@ -190,7 +185,6 @@ task publishMCToMavenLocal {
}

publishMCToMavenLocal.dependsOn(gradle.includedBuilds*.task(':publishToMavenLocal'))
publishMCToMavenLocal.dependsOn(gradle.includedBuilds*.task(':monticore-runtime-fix:publishToMavenLocal'))

/**
* Build the test projects, i.e. integration tests and experiments.
Expand Down
17 changes: 10 additions & 7 deletions docs/BestPractices-Language-Design.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,18 @@ Some general questions on how to design a complete languages are addressed here.
* When you know that the incoming model will be correct,
because they are generated
by algorithm or has been checked by a previous tool already,
you can decide to pass a (slight) superset of the language.
you can decide to parse a (slight) superset of the language, but
should ensure the AST is usefully compatible/identical.
* This may simplify the development process for two reasons:
** (a) you may derive a simpler grammar and
** (b) you may omit all the definitions of context conditions.
* But beware: (a) situations may change and manually changed models might come in
or (b) the is adapted by an ill-behaving pre-processor or (c) the model
may come in a wrong version.
* This applies e.g. for non-human-readable languages, such as JSON or XML,
because their models (respectively data sets) are typically generated by tools.
** (b) you may omit defining the context conditions.
* But beware: (a) situations may change and manually changed models might come in,
(b) the model is adapted by an ill-behaving pre-processor or (c) the model
may belong to an old language version.
* This simplified approach applies e.g. for non-human-readable languages,
such as JSON or XML,
because their models (respectively data sets) are typically generated by
assumingly correct tools.
* Defined by: BR


Expand Down
3 changes: 2 additions & 1 deletion docs/BestPractices.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ that we identified and applied as well as alternatives and their specific
advantages and drawbacks. The list also mentions where the solutions have been
found and where they have been applied first.

The list is subdivided into several MD files tackling various language design areas.
The list is subdivided into several files tackling the different
language design areas.

The list is partially temporary and also contains compact (incomplete) solutions.
More detailed descriptions of best practices can be found in the
Expand Down
6 changes: 3 additions & 3 deletions docs/GettingStarted.md
Original file line number Diff line number Diff line change
Expand Up @@ -1230,19 +1230,19 @@ including the `Automata` tool class `AutomataTool`. For running the

**With Powershell on Windows**
```powershell
java -jar target/libs/automaton-7.7.0-SNAPSHOT-tool.jar `
java -jar target/libs/automaton-7.7.0-tool.jar `
-i src/test/resources/automata/parser/PingPong.aut `
-s st/PingPong.autsym
```
**With Bash on Unix**
```bash
java -jar target/libs/automaton-7.7.0-SNAPSHOT-tool.jar \
java -jar target/libs/automaton-7.7.0-tool.jar \
-i src/test/resources/automata/parser/PingPong.aut \
-s st/PingPong.autsym
```
**With cmd on Windows**
```batch
java -jar target/libs/automaton-7.7.0-SNAPSHOT-tool.jar ^
java -jar target/libs/automaton-7.7.0-tool.jar ^
-i src/test/resources/automata/parser/PingPong.aut ^
-s st/PingPong.autsym
```
Expand Down
4 changes: 2 additions & 2 deletions docs/Gradle.md
Original file line number Diff line number Diff line change
Expand Up @@ -316,9 +316,9 @@ configurations {
}
dependencies {
// resolve the grammars of myolddsl
legacyGrammar "de.monticore.languages:myolddsl:7.7.0-SNAPSHOT:grammars"
legacyGrammar "de.monticore.languages:myolddsl:7.7.0:grammars"
// we also have to add the implementation/java classes
implementation "de.monticore.languages:myolddsl:7.7.0-SNAPSHOT"
implementation "de.monticore.languages:myolddsl:7.7.0"
}
tasks.generateMCGrammars.configure {
// Add the legacy-grammars to the symbol/model path of the generation
Expand Down
4 changes: 3 additions & 1 deletion docs/MontiCoreSymposium.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Third MontiCore Symposium 23. March - 26. March 2025

![](https://github.com/MontiCore/monticore/raw/dev/docs/docs/MC_Symp_Banner.png)

MontiCore is a language workbench designed for the efficient
development of domain-specific languages (DSLs) along with their
corresponding tooling. It provides a robust infrastructure to define,
Expand Down Expand Up @@ -39,7 +41,7 @@ bus transfer from Dusseldorf airport or Aachen and the venue.
### Submission

Submissions must adhere to the ACM formatting instructions, which can
be found here. We ask for two types of contributions:
be found [here](https://www.acm.org/publications/proceedings-template). We ask for two types of contributions:

[1] Research papers: 8 pages,
[2] Vision abstracts: 1 page.
Expand Down
Binary file added docs/docs/MC_Symp_Banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ org.gradle.caching=true
# org.gradle.caching.debug=true

# versions used
version=7.7.0-SNAPSHOT
previous_mc_version =7.6.0
version=7.8.0-SNAPSHOT
previous_mc_version =7.7.0

commons_cli_version = 1.4
se_commons_version =7.7.0-SNAPSHOT
se_commons_version =7.7.0
antlr_version =4.12.0
junit_version =5.10.3
emf_compare_version =1.2.0
Expand All @@ -27,4 +27,4 @@ commons_lang3_version = 3.8.1
freemarker_version = 2.3.28
guava_version =31.1-jre

cd4a_version =7.6.0
cd4a_version =7.7.0
1 change: 0 additions & 1 deletion monticore-generator/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ dependencies {

implementation "de.se_rwth.commons:se-commons-gradle:$se_commons_version"

implementation project(":monticore-runtime-fix") // The previous runtime, but with future-ported fixes
implementation "de.monticore:monticore-grammar:$previous_mc_version"
implementation "de.se_rwth.commons:se-commons-groovy:$se_commons_version"
implementation "de.se_rwth.commons:se-commons-logging:$se_commons_version"
Expand Down
8 changes: 4 additions & 4 deletions monticore-generator/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ useLocalRepo=true
showTestOutput=false

# versions used
version=7.7.0-SNAPSHOT
previous_mc_version =7.6.0
version=7.8.0-SNAPSHOT
previous_mc_version =7.7.0

se_commons_version =7.7.0-SNAPSHOT
se_commons_version =7.7.0
antlr_version =4.12.0
junit_version =5.10.3
cd4a_version =7.6.0
cd4a_version =7.7.0
commons_lang3_version = 3.8.1
commons_cli_version = 1.4
freemarker_version = 2.3.28
Expand Down
Loading

0 comments on commit f6df045

Please sign in to comment.