Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
monticore
EmbeddedMontiArc
generators
EMADL2CPP
Commits
65ce1dd9
Commit
65ce1dd9
authored
Jan 09, 2019
by
Alexander David Hellwig
Browse files
Update to new EMA Version
parent
b9d79ffc
Pipeline
#96301
passed with stages
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
pom.xml
View file @
65ce1dd9
...
...
@@ -8,18 +8,18 @@
<groupId>
de.monticore.lang.monticar
</groupId>
<artifactId>
embedded-montiarc-emadl-generator
</artifactId>
<version>
0.2.
5
-SNAPSHOT
</version>
<version>
0.2.
6
-SNAPSHOT
</version>
<!-- == PROJECT DEPENDENCIES ============================================= -->
<properties>
<!-- .. SE-Libraries .................................................. -->
<emadl.version>
0.2.
3
</emadl.version>
<emadl.version>
0.2.
4
</emadl.version>
<CNNTrain.version>
0.2.5
</CNNTrain.version>
<cnnarch-mxnet-generator.version>
0.2.
5
</cnnarch-mxnet-generator.version>
<cnnarch-mxnet-generator.version>
0.2.
7
</cnnarch-mxnet-generator.version>
<cnnarch-caffe2-generator.version>
0.2.7-SNAPSHOT
</cnnarch-caffe2-generator.version>
<embedded-montiarc-math-opt-generator>
0.1.
0
</embedded-montiarc-math-opt-generator>
<embedded-montiarc-math-opt-generator>
0.1.
2-SNAPSHOT
</embedded-montiarc-math-opt-generator>
<!-- .. Libraries .................................................. -->
<guava.version>
18.0
</guava.version>
...
...
src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLAbstractSymtab.java
View file @
65ce1dd9
...
...
@@ -23,7 +23,7 @@ package de.monticore.lang.monticar.emadl.generator;
import
de.monticore.ModelingLanguageFamily
;
import
de.monticore.io.paths.ModelPath
;
import
de.monticore.lang.embeddedmontiarc.LogConfig
;
import
de.monticore.lang.embeddedmontiarc.
embeddedmontiarc._symboltable
.ConstantPort
Symbol
;
import
de.monticore.lang.embeddedmontiarc.
helper
.ConstantPort
Helper
;
import
de.monticore.lang.monticar.emadl._symboltable.EMADLLanguage
;
import
de.monticore.lang.monticar.enumlang._symboltable.EnumLangLanguage
;
import
de.monticore.lang.monticar.generator.cpp.converter.MathConverter
;
...
...
@@ -62,7 +62,7 @@ public class EMADLAbstractSymtab {
}
public
static
Scope
createSymTab
(
String
...
modelPath
)
{
ConstantPort
Symbol
.
resetLastID
();
ConstantPort
Helper
.
resetLastID
();
MathConverter
.
resetIDs
();
ThreadingOptimizer
.
resetID
();
ModelingLanguageFamily
fam
=
new
ModelingLanguageFamily
();
...
...
src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGenerator.java
View file @
65ce1dd9
...
...
@@ -24,8 +24,8 @@ import com.google.common.base.Charsets;
import
com.google.common.base.Joiner
;
import
com.google.common.base.Splitter
;
import
com.google.common.io.Resources
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.ComponentSymbol
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.
Expanded
ComponentInstanceSymbol
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.
cncModel.EMA
ComponentSymbol
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.
instanceStructure.EMA
ComponentInstanceSymbol
;
import
de.monticore.lang.math._symboltable.MathStatementsSymbol
;
import
de.monticore.lang.monticar.cnnarch.CNNArchGenerator
;
import
de.monticore.lang.monticar.cnnarch._symboltable.ArchitectureSymbol
;
...
...
@@ -102,7 +102,7 @@ public class EMADLGenerator {
public
void
generate
(
String
modelPath
,
String
qualifiedName
)
throws
IOException
,
TemplateException
{
setModelsPath
(
modelPath
);
TaggingResolver
symtab
=
EMADLAbstractSymtab
.
createSymTabAndTaggingResolver
(
getModelsPath
());
ComponentSymbol
component
=
symtab
.<
ComponentSymbol
>
resolve
(
qualifiedName
,
ComponentSymbol
.
KIND
).
orElse
(
null
);
EMA
ComponentSymbol
component
=
symtab
.<
EMA
ComponentSymbol
>
resolve
(
qualifiedName
,
EMA
ComponentSymbol
.
KIND
).
orElse
(
null
);
List
<
String
>
splitName
=
Splitters
.
DOT
.
splitToList
(
qualifiedName
);
String
componentName
=
splitName
.
get
(
splitName
.
size
()
-
1
);
...
...
@@ -113,22 +113,22 @@ public class EMADLGenerator {
System
.
exit
(
1
);
}
E
xpanded
ComponentInstanceSymbol
instance
=
component
.
getEnclosingScope
().<
E
xpanded
ComponentInstanceSymbol
>
resolve
(
instanceName
,
E
xpanded
ComponentInstanceSymbol
.
KIND
).
get
();
E
MA
ComponentInstanceSymbol
instance
=
component
.
getEnclosingScope
().<
E
MA
ComponentInstanceSymbol
>
resolve
(
instanceName
,
E
MA
ComponentInstanceSymbol
.
KIND
).
get
();
generateFiles
(
symtab
,
instance
,
symtab
);
}
public
void
generateFiles
(
TaggingResolver
taggingResolver
,
E
xpanded
ComponentInstanceSymbol
c
omponentSymbol
,
Scope
symtab
)
throws
IOException
{
List
<
FileContent
>
fileContents
=
generateStrings
(
taggingResolver
,
c
omponentSymbol
,
symtab
);
public
void
generateFiles
(
TaggingResolver
taggingResolver
,
E
MA
ComponentInstanceSymbol
EMAC
omponentSymbol
,
Scope
symtab
)
throws
IOException
{
List
<
FileContent
>
fileContents
=
generateStrings
(
taggingResolver
,
EMAC
omponentSymbol
,
symtab
);
for
(
FileContent
fileContent
:
fileContents
)
{
emamGen
.
generateFile
(
fileContent
);
}
}
public
List
<
FileContent
>
generateStrings
(
TaggingResolver
taggingResolver
,
E
xpanded
ComponentInstanceSymbol
componentInstanceSymbol
,
Scope
symtab
){
public
List
<
FileContent
>
generateStrings
(
TaggingResolver
taggingResolver
,
E
MA
ComponentInstanceSymbol
componentInstanceSymbol
,
Scope
symtab
){
List
<
FileContent
>
fileContents
=
new
ArrayList
<>();
Set
<
E
xpanded
ComponentInstanceSymbol
>
allInstances
=
new
HashSet
<>();
Set
<
E
MA
ComponentInstanceSymbol
>
allInstances
=
new
HashSet
<>();
generateComponent
(
fileContents
,
allInstances
,
taggingResolver
,
componentInstanceSymbol
,
symtab
);
...
...
@@ -159,20 +159,20 @@ public class EMADLGenerator {
}
protected
void
generateComponent
(
List
<
FileContent
>
fileContents
,
Set
<
E
xpanded
ComponentInstanceSymbol
>
allInstances
,
Set
<
E
MA
ComponentInstanceSymbol
>
allInstances
,
TaggingResolver
taggingResolver
,
E
xpanded
ComponentInstanceSymbol
componentInstanceSymbol
,
E
MA
ComponentInstanceSymbol
componentInstanceSymbol
,
Scope
symtab
){
allInstances
.
add
(
componentInstanceSymbol
);
ComponentSymbol
c
omponentSymbol
=
componentInstanceSymbol
.
getComponentType
().
getReferencedSymbol
();
EMA
ComponentSymbol
EMAC
omponentSymbol
=
componentInstanceSymbol
.
getComponentType
().
getReferencedSymbol
();
/* remove the following two lines if the component symbol full name bug with generic variables is fixed */
c
omponentSymbol
.
setFullName
(
null
);
c
omponentSymbol
.
getFullName
();
EMAC
omponentSymbol
.
setFullName
(
null
);
EMAC
omponentSymbol
.
getFullName
();
/* */
Optional
<
ArchitectureSymbol
>
architecture
=
componentInstanceSymbol
.
getSpannedScope
().
resolve
(
""
,
ArchitectureSymbol
.
KIND
);
Optional
<
MathStatementsSymbol
>
mathStatements
=
c
omponentSymbol
.
getSpannedScope
().
resolve
(
"MathStatements"
,
MathStatementsSymbol
.
KIND
);
Optional
<
MathStatementsSymbol
>
mathStatements
=
EMAC
omponentSymbol
.
getSpannedScope
().
resolve
(
"MathStatements"
,
MathStatementsSymbol
.
KIND
);
EMADLCocos
.
checkAll
(
componentInstanceSymbol
);
...
...
@@ -195,7 +195,7 @@ public class EMADLGenerator {
}
}
public
void
generateCNN
(
List
<
FileContent
>
fileContents
,
TaggingResolver
taggingResolver
,
E
xpanded
ComponentInstanceSymbol
instance
,
ArchitectureSymbol
architecture
){
public
void
generateCNN
(
List
<
FileContent
>
fileContents
,
TaggingResolver
taggingResolver
,
E
MA
ComponentInstanceSymbol
instance
,
ArchitectureSymbol
architecture
){
Map
<
String
,
String
>
contentMap
=
cnnArchGenerator
.
generateStrings
(
architecture
);
String
fullName
=
instance
.
getFullName
().
replaceAll
(
"\\."
,
"_"
);
...
...
@@ -238,16 +238,16 @@ public class EMADLGenerator {
return
component
;
}
public
void
generateMathComponent
(
List
<
FileContent
>
fileContents
,
TaggingResolver
taggingResolver
,
E
xpanded
ComponentInstanceSymbol
c
omponentSymbol
,
MathStatementsSymbol
mathStatementsSymbol
){
public
void
generateMathComponent
(
List
<
FileContent
>
fileContents
,
TaggingResolver
taggingResolver
,
E
MA
ComponentInstanceSymbol
EMAC
omponentSymbol
,
MathStatementsSymbol
mathStatementsSymbol
){
fileContents
.
add
(
new
FileContent
(
emamGen
.
generateString
(
taggingResolver
,
c
omponentSymbol
,
mathStatementsSymbol
),
c
omponentSymbol
));
emamGen
.
generateString
(
taggingResolver
,
EMAC
omponentSymbol
,
mathStatementsSymbol
),
EMAC
omponentSymbol
));
}
public
void
generateSubComponents
(
List
<
FileContent
>
fileContents
,
Set
<
E
xpanded
ComponentInstanceSymbol
>
allInstances
,
TaggingResolver
taggingResolver
,
E
xpanded
ComponentInstanceSymbol
componentInstanceSymbol
,
Scope
symtab
){
public
void
generateSubComponents
(
List
<
FileContent
>
fileContents
,
Set
<
E
MA
ComponentInstanceSymbol
>
allInstances
,
TaggingResolver
taggingResolver
,
E
MA
ComponentInstanceSymbol
componentInstanceSymbol
,
Scope
symtab
){
fileContents
.
add
(
new
FileContent
(
emamGen
.
generateString
(
taggingResolver
,
componentInstanceSymbol
,
(
MathStatementsSymbol
)
null
),
componentInstanceSymbol
));
String
lastNameWithoutArrayPart
=
""
;
for
(
E
xpanded
ComponentInstanceSymbol
instanceSymbol
:
componentInstanceSymbol
.
getSubComponents
())
{
for
(
E
MA
ComponentInstanceSymbol
instanceSymbol
:
componentInstanceSymbol
.
getSubComponents
())
{
int
arrayBracketIndex
=
instanceSymbol
.
getName
().
indexOf
(
"["
);
boolean
generateComponentInstance
=
true
;
if
(
arrayBracketIndex
!=
-
1
)
{
...
...
@@ -262,10 +262,10 @@ public class EMADLGenerator {
}
}
public
List
<
FileContent
>
generateCNNTrainer
(
Set
<
E
xpanded
ComponentInstanceSymbol
>
allInstances
,
String
mainComponentName
)
{
public
List
<
FileContent
>
generateCNNTrainer
(
Set
<
E
MA
ComponentInstanceSymbol
>
allInstances
,
String
mainComponentName
)
{
List
<
FileContent
>
fileContents
=
new
ArrayList
<>();
for
(
E
xpanded
ComponentInstanceSymbol
componentInstance
:
allInstances
)
{
ComponentSymbol
component
=
componentInstance
.
getComponentType
().
getReferencedSymbol
();
for
(
E
MA
ComponentInstanceSymbol
componentInstance
:
allInstances
)
{
EMA
ComponentSymbol
component
=
componentInstance
.
getComponentType
().
getReferencedSymbol
();
Optional
<
ArchitectureSymbol
>
architecture
=
component
.
getSpannedScope
().
resolve
(
""
,
ArchitectureSymbol
.
KIND
);
if
(
architecture
.
isPresent
())
{
...
...
src/test/java/de/monticore/lang/monticar/emadl/SymtabTest.java
View file @
65ce1dd9
...
...
@@ -20,8 +20,8 @@
*/
package
de.monticore.lang.monticar.emadl
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.ComponentSymbol
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.
Expanded
ComponentInstanceSymbol
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.
cncModel.EMA
ComponentSymbol
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.
instanceStructure.EMA
ComponentInstanceSymbol
;
import
de.monticore.lang.monticar.emadl._parser.EMADLParser
;
import
de.monticore.symboltable.Scope
;
import
de.se_rwth.commons.logging.Log
;
...
...
@@ -49,8 +49,8 @@ public class SymtabTest extends AbstractSymtabTest {
@Test
public
void
testAlexnet
(){
Scope
symTab
=
createSymTab
(
"src/test/resources/models"
);
ComponentSymbol
a
=
symTab
.<
ComponentSymbol
>
resolve
(
"ResNet34"
,
ComponentSymbol
.
KIND
).
orElse
(
null
);
E
xpanded
ComponentInstanceSymbol
c
=
symTab
.<
E
xpanded
ComponentInstanceSymbol
>
resolve
(
"resNet34"
,
E
xpanded
ComponentInstanceSymbol
.
KIND
).
orElse
(
null
);
EMA
ComponentSymbol
a
=
symTab
.<
EMA
ComponentSymbol
>
resolve
(
"ResNet34"
,
EMA
ComponentSymbol
.
KIND
).
orElse
(
null
);
E
MA
ComponentInstanceSymbol
c
=
symTab
.<
E
MA
ComponentInstanceSymbol
>
resolve
(
"resNet34"
,
E
MA
ComponentInstanceSymbol
.
KIND
).
orElse
(
null
);
assertNotNull
(
a
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment