Skip to content

Commit

Permalink
Minor tweaks: Primitive data types, java string conversion.
Browse files Browse the repository at this point in the history
  • Loading branch information
BuckeyHack committed Feb 24, 2016
1 parent 3c59233 commit ed5326b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 7 deletions.
8 changes: 6 additions & 2 deletions jdeeco-edl/src/cz/cuni/mff/d3s/jdeeco/edl/EDL.xtext
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ DataContractDefinition returns DataContractDefinition:
;

FieldDeclaration returns FieldDeclaration:
name=ID ":" type=QualifiedName
name=ID ":" type=TypeName
;


Expand All @@ -55,7 +55,7 @@ AliasDefinition returns AliasDefinition:
;

IdDefinition returns IdDefinition:
fieldName=EString ':' type = QualifiedName (isAssigned?= ':=' value = Query)?
fieldName=EString ':' type = TypeName (isAssigned?= ':=' value = Query)?
;

ExchangeRule returns ExchangeRule:
Expand All @@ -68,6 +68,10 @@ QualifiedName returns QualifiedName:
name=ID
;

TypeName returns QualifiedName:
name = ("int" | "float" | "string" | "bool") | QualifiedName
;


// ===== Core types (terminals) =====

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ import java.util.List;
import cz.cuni.mff.d3s.deeco.ensembles.EnsembleInstance;
public class «e.name» implements EnsembleInstance {
public «e.id.type.name» «e.id.fieldName»;
public «getJavaTypeName(e.id.type.name)» «e.id.fieldName»;
public «e.name»(«e.id.type.name» «e.id.fieldName») {
public «e.name»(«getJavaTypeName(e.id.type.name)» «e.id.fieldName») {
this.«e.id.fieldName» = «e.id.fieldName»;
«FOR r : e.roles»
«IF r.cardinalityMax != 1»
Expand Down Expand Up @@ -77,10 +77,17 @@ public class «e.name» implements EnsembleInstance {
public class «d.name» {
«FOR f : d.fields»
public «f.type.name» «f.name»;
public «getJavaTypeName(f.type.name)» «f.name»;
«ENDFOR»
}'''
);
}

def String getJavaTypeName(String type) {
if (type.equals("string"))
"String"
else
type
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -64,15 +64,19 @@ class EDLValidator extends AbstractEDLValidator {
}

@Check
def validateEnsembleTypeInformation(EnsembleDefinition ensemble) {
def validateEnsembleDefinition(EnsembleDefinition ensemble) {
if (ensemble.fitness != null) {
val type = checkTypes(ensemble.fitness, ensemble)
if (!type.equals("int"))
error("Fitness function must be a numeric expression.", ensemble.fitness, EdlPackage.Literals.ENSEMBLE_DEFINITION__FITNESS)
}

for (Query c : ensemble.constraints) {
checkTypes(c, ensemble)
val type = checkTypes(c, ensemble)
// TODO: Improve model so the constraint errors can be reported per constraint
// if (!type.equals("bool")) {
// error("Constraint must be a logical expression. - " + type, ensemble, EdlPackage.Literals.ENSEMBLE_DEFINITION__CONSTRAINTS)
// }
}

for (AliasDefinition a : ensemble.aliases) {
Expand Down

0 comments on commit ed5326b

Please sign in to comment.