Commit bfa87378 authored by Sascha Niklas Schneiders's avatar Sascha Niklas Schneiders
Browse files

added project

parent 709b96f6
Btarget
embedded-montiarc
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="embedded-montiarc" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="embedded-montiarc" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
<component name="masterDetails">
<states>
<state key="GlobalLibrariesConfigurable.UI">
<settings>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="JdkListConfigurable.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectLibrariesConfigurable.UI">
<settings>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/embedded-montiarc.iml" filepath="$PROJECT_DIR$/embedded-montiarc.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- == PROJECT COORDINATES ============================================= -->
<groupId>de.monticore.lang.monticar</groupId>
<artifactId>embedded-montiarc</artifactId>
<version>0.0.3-SNAPSHOT</version>
<!-- == PROJECT DEPENDENCIES ============================================= -->
<properties>
<wagon.provider.version>2.6</wagon.provider.version>
<!-- DSLs -->
<javadsl.version>4.3.9</javadsl.version>
<cd4a.version>1.3.10</cd4a.version>
<!-- .. SE-Libraries .................................................. -->
<monticore.version>4.5.3-SNAPSHOT</monticore.version>
<se-commons.version>1.7.7</se-commons.version>
<mc.grammars.assembly.version>0.0.6-SNAPSHOT</mc.grammars.assembly.version>
<languages.version>4.0.1-SNAPSHOT</languages.version>
<SIUnit.version>0.0.4-SNAPSHOT</SIUnit.version>
<Common-MontiCar.version>0.0.3-SNAPSHOT</Common-MontiCar.version>
<!-- .. Libraries .................................................. -->
<guava.version>18.0</guava.version>
<junit.version>4.12</junit.version>
<logback.version>1.1.2</logback.version>
<jscience.version>4.3.1</jscience.version>
<antlr.version>4.5.1</antlr.version>
<jsr305.version>3.0.0</jsr305.version>
<!-- .. Plugins ....................................................... -->
<monticore.plugin>4.5.3-SNAPSHOT</monticore.plugin>
<assembly.plugin>2.5.4</assembly.plugin>
<compiler.plugin>3.3</compiler.plugin>
<source.plugin>2.4</source.plugin>
<shade.plugin>2.4.3</shade.plugin>
<!-- Classifiers -->
<grammars.classifier>grammars</grammars.classifier>
<cli.classifier>cli</cli.classifier>
<!-- .. Misc .......................................................... -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>de.se_rwth.commons</groupId>
<artifactId>se-commons-logging</artifactId>
<version>${se-commons.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!-- MontiCore Dependencies -->
<dependency>
<groupId>de.monticore</groupId>
<artifactId>monticore-runtime</artifactId>
<version>${monticore.version}</version>
</dependency>
<dependency>
<groupId>de.monticore</groupId>
<artifactId>monticore-grammar</artifactId>
<version>${monticore.version}</version>
</dependency>
<dependency>
<groupId>de.monticore</groupId>
<artifactId>monticore-grammar</artifactId>
<version>${monticore.version}</version>
<classifier>${grammars.classifier}</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>de.monticore.lang</groupId>
<artifactId>cd4analysis</artifactId>
<version>${cd4a.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>${jsr305.version}</version>
</dependency>
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>${antlr.version}</version>
</dependency>
<dependency>
<groupId>de.se_rwth.commons</groupId>
<artifactId>se-commons-groovy</artifactId>
<version>${se-commons.version}</version>
</dependency>
<dependency>
<groupId>de.monticore.lang</groupId>
<artifactId>SIUnit</artifactId>
<version>${SIUnit.version}</version>
</dependency>
<dependency>
<groupId>de.monticore.lang</groupId>
<artifactId>SIUnit</artifactId>
<version>${SIUnit.version}</version>
<classifier>${grammars.classifier}</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>de.monticore.lang.monticar</groupId>
<artifactId>common-monticar</artifactId>
<version>${Common-MontiCar.version}</version>
</dependency>
<dependency>
<groupId>de.monticore.lang.monticar</groupId>
<artifactId>common-monticar</artifactId>
<version>${Common-MontiCar.version}</version>
<classifier>${grammars.classifier}</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>montiarc.languages</groupId>
<artifactId>tagging</artifactId>
<version>${languages.version}</version>
</dependency>
<dependency>
<groupId>montiarc.languages</groupId>
<artifactId>montiarc-fe</artifactId>
<version>${languages.version}</version>
</dependency>
<dependency>
<groupId>montiarc.languages</groupId>
<artifactId>montiarc-fe</artifactId>
<classifier>${grammars.classifier}</classifier>
<version>${languages.version}</version>
</dependency>
<dependency>
<groupId>de.monticore</groupId>
<artifactId>javaDSL</artifactId>
<version>${javadsl.version}</version>
</dependency>
<!-- .. Test Libraries ............................................... -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.monticore</groupId>
<artifactId>monticore-runtime</artifactId>
<version>${monticore.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>org.jscience</groupId>
<artifactId>jscience</artifactId>
<version>${jscience.version}</version>
</dependency>
</dependencies>
<!-- == BUILD INFRASTRUCTURE ============================================
<ciManagement>
<system>Jenkins CI</system>
<url>http://ci.se.rwth-aachen.de/view/montiarc/</url>
</ciManagement>
-->
<!-- == PROJECT BUILD SETTINGS =========================================== -->
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav-jackrabbit</artifactId>
<version>${wagon.provider.version}</version>
</extension>
</extensions>
<plugins>
<!-- MontiCore Generation -->
<plugin>
<groupId>de.monticore.mojo</groupId>
<artifactId>monticore-maven-plugin</artifactId>
<version>${monticore.plugin}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Other Configuration -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler.plugin}</version>
<configuration>
<useIncrementalCompilation>true</useIncrementalCompilation>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>${assembly.plugin}</version>
<dependencies>
<dependency>
<groupId>de.monticore</groupId>
<artifactId>mc-assemblies</artifactId>
<version>${mc.grammars.assembly.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>grammars</id>
<configuration>
<finalName>${project.artifactId}-${project.version}</finalName>
<descriptorRefs>
<descriptorRef>grammars-assembly</descriptorRef>
</descriptorRefs>
<formats>
<format>jar</format>
</formats>
</configuration>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Source Jar Configuration -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${source.plugin}</version>
<executions>
<execution>
<id>create source jar</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
<configuration>
<excludeResources>false</excludeResources>
<includes>
<include>**/*.java</include>
<include>**/*.ftl</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>se-nexus</id>
<url>https://raw.githubusercontent.com/EmbeddedMontiArc/external-dependencies/master/</url>
</repository>
<snapshotRepository>
<id>se-nexus</id>
<url>https://raw.githubusercontent.com/EmbeddedMontiArc/external-dependencies/master/</url>
</snapshotRepository>
<site>
<id>se-nexus</id>
<url>https://raw.githubusercontent.com/EmbeddedMontiArc/external-dependencies/master/</url>
</site>
</distributionManagement>
</project>
/*
* ******************************************************************************
* MontiCore Language Workbench, www.monticore.de
* Copyright (c) 2017, MontiCore, All rights reserved.
*
* This project is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3.0 of the License, or (at your option) any later version.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this project. If not, see <http://www.gnu.org/licenses/>.
* ******************************************************************************
*/
package de.monticore.lang.embeddedmontiarc;
/**
* Grammar for EmbeddedMontiArc.
*
* @author Sascha Schneiders, Sining Wang, Yu Qiao
*/
grammar EmbeddedMontiArc extends de.monticore.lang.monticar.Common2, de.monticore.lang.monticar.Ranges, de.monticore.lang.monticar.MCExpressions {
/** ASTEMACompilationUnit represents the complete component
* @attribute package The package declaration of this component
* @attribute importStatements List of imported elements
* @attribute Component the root component of the component
*/
EMACompilationUnit =
("package" package:(Name& || ".")+ ";")?
(ImportStatement)*
Component;
/* ======================================================*/
/* ===== Modified but based on old ARCD Grammar =========*/
/* ======================================================*/
Stereotype =
Name ;
/**
* A component may contain arbitrary many Elements.
* This interface may be used as an extension point to
* enrich components with further elements.
*/
interface Element;
/**
* A component is a unit of computation or a data store.
* The size of a component may scale from a single
* procedure to a whole application. A component may be
* either decomposed to subcomponents or is atomic.
*
* @attribute stereotype an optional stereotype
* @attribute name type name of this component
* @attribute head is used to set generic types, a
* configuration and a parent component
* @attribute instanceName if this optional name is given,
* a subcomponent is automatically created that
* instantiates this inner component type. This is only
* allowed for inner component definitions.
* @attribute body contains the architectural elements
* inherited by this component
*/
symbol scope Component implements Element =
Stereotype?
"component" Name
head:ComponentHead
(instanceName:Name actualTypeArgument:TypeArguments?)?
body:ComponentBody;
/**
* A components head is used to define generic type
* parameters that may be used as port types in the
* component, to define configuration parameters that may
* be used to configure the component, and to set the
* parent component of this component.
*
* @attribute genericTypeParameters a list of type
* parameters that may be used as port types in the
* component
* @attribute parameters a list of Parameters that
* define a configurable component. If a configurable
* component is referenced, these parameters have to be
* set.
* @attribute superComponent the type of the super
* component
*/
ComponentHead =
((genericTypeParameters:TypeParameters)|())?
("(" (Parameter || ",")+ ")")?
("extends" superComponent:ReferenceType)?;
/**
* The body contains architectural elements of
* this component.
*
* @attribute elements list of architectural elements
*/
ComponentBody =
("{"
Element*
"}");
/**
* An Interface defines an interface of a component
* containing in- and outgoing ports.
*
* @attribute stereotype an optional stereotype
* @attribute ports a list of ports that are contained in
* this interface
*/
Interface implements Element =
Stereotype?
("port"|"ports") ports:(Port || ",")+ ";";
/**a
* An incoming port is used to receive messages, an
* outgoing port is used to send messages of a specific
* type. Ports can now also be specified as an array.
*
* @attribute stereotype an optional stereotype
* @attribute incoming true, if this is an incoming port
* @attribute outgoing true, if this is an outgoing port
* @attribute type the message type of this port
* @attribute name an optional name of this port
*/
/**might support auto type adding based on last previous type
* declaration later on
*/
/* Port =
* Stereotype?
* (incoming:["in"] | outgoing:["out"])
* Type Name? ( "[" UnitN "]" )? ;
*/
Port =
Stereotype?
(incoming:["in"] | outgoing:["out"])
Type (Name? | Name ( "[" UnitNumberResolution "]" )?);
/**
* Sets the timing of a component.
*
* @attribute stereotype optional stereotype
* @attribute instant a timed component
* @attribute delayed a timed component with delay
* @attribute causalsync a causal synchronous component
* @attribute sync a synchronous component
* TODO move to sub language?!
*/
MontiArcTiming implements MontiArcConfig =
"timing" Stereotype?
(["instant"] | ["delayed"] | ["untimed"] | ["causalsync"] | ["sync"]) ";";
/**
* A subcomponent is used to create one or more instances
* of another component. This way the hierarchical