aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext')
-rw-r--r--org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext42
1 files changed, 29 insertions, 13 deletions
diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext
index 2d4eb1b9..5f8b35f3 100644
--- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext
+++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext
@@ -4,34 +4,42 @@ import "http://www.eclipse.org/emf/2002/Ecore" as ecore
4import "http://www.eclipse.org/viatra/solver/language/model/Problem" 4import "http://www.eclipse.org/viatra/solver/language/model/Problem"
5 5
6Problem: 6Problem:
7 ("problem" name=ID ".")? 7 ("problem" name=Identifier ".")?
8 statements+=Statement*; 8 statements+=Statement*;
9 9
10Statement: 10Statement:
11 ClassDeclaration | PredicateDefinition | Assertion | ScopeDeclaration; 11 ClassDeclaration | EnumDeclaration | PredicateDefinition | Assertion | ScopeDeclaration;
12 12
13ClassDeclaration: 13ClassDeclaration:
14 abstract?="abstract"? "class" 14 abstract?="abstract"? "class"
15 name=ID 15 name=Identifier
16 ("extends" superTypes+=[ClassDeclaration|QualifiedName] ("," superTypes+=[ClassDeclaration|QualifiedName])*)? 16 ("extends" superTypes+=[Relation|QualifiedName] ("," superTypes+=[Relation|QualifiedName])*)?
17 ("{" (referenceDeclarations+=ReferenceDeclaration ";"?)* "}" | "."); 17 ("{" (referenceDeclarations+=ReferenceDeclaration ";"?)* "}" | ".");
18 18
19EnumDeclaration:
20 "enum"
21 name=Identifier
22 ("{" (literals+=EnumLiteral ("," literals+=EnumLiteral)* ("," | ";")?)? "}" | ".");
23
24EnumLiteral returns Node:
25 name=QuotedOrUnquotedId;
26
19ReferenceDeclaration: 27ReferenceDeclaration:
20 (containment?="contains" | "refers") 28 (containment?="contains" | "refers")?
21 referenceType=[ClassDeclaration|QualifiedName] 29 referenceType=[Relation|QualifiedName]
22 ("[" multiplicity=Multiplicity "]")? 30 ("[" multiplicity=Multiplicity "]")?
23 name=ID 31 name=Identifier
24 ("opposite" opposite=[ReferenceDeclaration|QualifiedName])?; 32 ("opposite" opposite=[ReferenceDeclaration|QualifiedName])?;
25 33
26PredicateDefinition: 34PredicateDefinition:
27 (error?="error" "pred"? | "pred") 35 (error?="error" "pred"? | "pred")
28 name=ID 36 name=Identifier
29 "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" 37 "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")"
30 (":-" bodies+=Conjunction (";" bodies+=Conjunction)*)? 38 (":-" bodies+=Conjunction (";" bodies+=Conjunction)*)?
31 "."; 39 ".";
32 40
33Parameter: 41Parameter:
34 parameterType=[ClassDeclaration] name=ID; 42 parameterType=[Relation|QualifiedName]? name=Identifier;
35 43
36Conjunction: 44Conjunction:
37 literals+=Literal ("," literals+=Literal)*; 45 literals+=Literal ("," literals+=Literal)*;
@@ -48,7 +56,7 @@ Atom:
48 "(" (arguments+=Argument ("," arguments+=Argument)*)? ")"; 56 "(" (arguments+=Argument ("," arguments+=Argument)*)? ")";
49 57
50Argument: 58Argument:
51 variable=[Variable]; 59 variableOrNode=[VariableOrNode|QualifiedName];
52 60
53Assertion: 61Assertion:
54 (relation=[Relation|QualifiedName] 62 (relation=[Relation|QualifiedName]
@@ -91,10 +99,18 @@ ExactMultiplicity:
91UpperBound returns ecore::EInt: 99UpperBound returns ecore::EInt:
92 INT | "*"; 100 INT | "*";
93 101
102QuotedOrUnquotedId:
103 QUOTED_ID | Identifier;
104
94QualifiedName: 105QualifiedName:
95 QUOTED_ID | ID (":" ID)* (":" QUOTED_ID)?; 106 QUOTED_ID | Identifier (":" Identifier)* (":" QUOTED_ID)?;
107
108Identifier:
109 ID | "true" | "false";
96 110
97@Override 111@Override
98terminal STRING: '"' ( '\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\'|'"') )* '"'; 112terminal STRING:
113 '"' ('\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\' | '"'))* '"';
99 114
100terminal QUOTED_ID: "'" ( '\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\'|"'") )* "'"; 115terminal QUOTED_ID:
116 "'" ('\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\' | "'"))* "'";