diff --git a/runtime-workspace/fr.n7.game2petrinet/Game2PetriNet.atl b/runtime-workspace/fr.n7.game2petrinet/Game2PetriNet.atl index 3b3db31..9221f23 100755 --- a/runtime-workspace/fr.n7.game2petrinet/Game2PetriNet.atl +++ b/runtime-workspace/fr.n7.game2petrinet/Game2PetriNet.atl @@ -65,13 +65,6 @@ def : getNombreInit() : Integer = ->asSequence() ->iterate(o; res : Integer = self.tailleInventaire | res - o.getNombreInit() * o.taille); --- Obtenir la place d'un chemin (in / out) -helper context game!Chemin -def: getPlaceOf(s : String): petrinet!Place = - petrinet!Place.allInstances() - ->select(p | p.name = s) - ->asSequence() - ->first(); helper context game!Lieu def: getPlace(): petrinet!Place = @@ -194,7 +187,7 @@ rule Chemin2PetriNet { index <- 0; for (condVis in c.visible.condition) { for (condOuv in c.ouvert.condition) { - thisModule.newChemin(c, index, condVis.union(condOuv)); + thisModule.newChemin(c, index, condVis.conditionTest.union(condOuv.conditionTest)); index <- index + 1; } } @@ -208,13 +201,13 @@ rule newChemin(c : game!Chemin, index : Integer, conditions : game!ConditionTest network <- ''.getJeu()), arcIn: petrinet!Arc( - place <- c.getPlaceOf('lieu_' + c.lieuIn.name), + place <- ('lieu_' + c.lieuIn.name).getPlace(), transition <- t, outgoing <- false, weight <- 1), arcOut: petrinet!Arc( - place <- c.getPlaceOf('lieu_' + c.lieuOut.name), + place <- ('lieu_' + c.lieuOut.name).getPlace(), transition <- t, outgoing <- true, weight <- 1) @@ -237,19 +230,29 @@ rule Interaction2PetriNet { using { index : Integer = 0; } + do { + index <- 0; + for (condVis in i.getPersonne().visible.condition) { + thisModule.newInteraction(i, index, condVis.conditionTest); + index <- index + 1; + } + } +} + +rule newInteraction(i : game!Interaction, index : Integer, conditions : game!ConditionTest) { to t: petrinet!Transition( - name <- 'interaction_' + i.name + '_' + i.getPersonne().name, + name <- 'interaction_' + i.name + '_' + i.getPersonne().name + '_' + index.toString(), network <- ''.getJeu()), - - arcOut: petrinet!Arc( - place <- i.getPersonne(), + + arcIn: petrinet!Arc( + place <- ('personne_' + i.getPersonne().name).getPlace(), transition <- t, outgoing <- true, weight <- 1), - - arcIn: petrinet!Arc( - place <- i.getPersonne().getLieu().getPlace(), + + arcOut: petrinet!Arc( + place <- ('lieu_' + i.getPersonne().getLieu().name).getPlace(), transition <- t, outgoing <- false, weight <- 1) @@ -260,38 +263,36 @@ rule Interaction2PetriNet { for (o in i.objetsRecus) { thisModule.recuObjet(t, o.name); } - for (c in i.connaissances) { - thisModule.recuConn(t, c.name); - } - index <- 0; - for (condV in i.getPersonne().visible.condition) { - thisModule.Condition2PetriNet(('interaction_' + i.name + '_' + i.getPersonne().name).getTransition(), condV); - index <- index + 1; + for (con in i.connaissances) { + thisModule.recuConn(t, con.name); } + thisModule.Condition2PetriNet(t, conditions); } } + rule Condition2PetriNet(t : petrinet!Transition, c : game!Condition) { do { for (cond in c) { if (cond.oclIsKindOf(game!ConditionObjet)) { if (cond.comparateur = '==') { - thisModule.readObjetEga(t, cond.objet, cond.nombre); + thisModule.readObjetEga(t, cond.objet.name, cond.nombre); } else if (cond.comparateur = '>') { - thisModule.readObjetSup(t, cond.objet, cond.nombre); + thisModule.readObjetSup(t, cond.objet.name, cond.nombre); } else if (cond.comparateur = '>=') { - thisModule.readObjetSup(t, cond.objet, cond.nombre - 1); + thisModule.readObjetSup(t, cond.objet.name, cond.nombre - 1); } else if (cond.comparateur = '<') { - thisModule.readObjetInf(t, cond.objet, cond.nombre); + thisModule.readObjetInf(t, cond.objet.name, cond.nombre); } else if (cond.comparateur = '<=') { - thisModule.readObjetInf(t, cond.objet, cond.nombre + 1); + thisModule.readObjetInf(t, cond.objet.name, cond.nombre + 1); + } + } else if (cond.oclIsKindOf(game!ConditionConnaissance)) { + if (cond.negation = '!') { + thisModule.readConnNeg(t, cond.connaissance.name); + } else { + thisModule.readConn(t, cond.connaissance.name); } } else { - if (cond.negation = '!') { - thisModule.readConnNeg(t, cond.connaissance); - } else { - thisModule.readConn(t, cond.connaissance); - } } } } @@ -299,6 +300,19 @@ rule Condition2PetriNet(t : petrinet!Transition, c : game!Condition) { rule Action2PetriNet { from a: game!Action + using { + index : Integer = 0; + } + do { + index <- 0; + for (condVis in a.visible.condition) { + thisModule.newAction(a, index, condVis.conditionTest); + index <- index + 1; + } + } +} + +rule newAction(a : game!Action, index : Integer, conditions : game!ConditionTest) { to t: petrinet!Transition( name <- 'action_' + a.name, diff --git a/runtime-workspace/fr.n7.petrinet.examples/src-gen/.nfs0000000001ae00dd00000022 b/runtime-workspace/fr.n7.petrinet.examples/src-gen/.nfs0000000001ae00dd00000022 new file mode 100644 index 0000000..a8d10bf --- /dev/null +++ b/runtime-workspace/fr.n7.petrinet.examples/src-gen/.nfs0000000001ae00dd00000022 @@ -0,0 +1,15 @@ +net jeu +pl taille (0) +pl objet_tentative (3) +pl objet_tentative_neg (0) +pl connaissance_Reussite (0) +pl connaissance_Reussite_neg (1) +pl personne_Sphinx (0) +pl lieu_Enigme (1) +pl lieu_Succes (0) +pl lieu_Echec (0) +tr chemin_Win lieu_Enigme*1 connaissance_Reussite*1 -> lieu_Succes*1 connaissance_Reussite*1 +tr chemin_Loose lieu_Enigme*1 objet_tentative*0 objet_tentative_neg*3 -> lieu_Echec*1 objet_tentative*0 objet_tentative_neg*3 +tr interaction_Parler_Sphinx lieu_Enigme*1 connaissance_Reussite_neg*1 objet_tentative*1 -> personne_Sphinx*1 connaissance_Reussite_neg*1 objet_tentative*1 +tr action_Reponse_1 personne_Sphinx*1 connaissance_Reussite_neg*1 -> lieu_Enigme*1 connaissance_Reussite*1 +tr action_Reponse_2 personne_Sphinx*1 objet_tentative*1 -> lieu_Enigme*1 objet_tentative_neg*1 taille*1 diff --git a/runtime-workspace/fr.n7.petrinet.examples/src-gen/jeu.net b/runtime-workspace/fr.n7.petrinet.examples/src-gen/jeu.net index a8d10bf..eae9517 100644 --- a/runtime-workspace/fr.n7.petrinet.examples/src-gen/jeu.net +++ b/runtime-workspace/fr.n7.petrinet.examples/src-gen/jeu.net @@ -8,8 +8,8 @@ pl personne_Sphinx (0) pl lieu_Enigme (1) pl lieu_Succes (0) pl lieu_Echec (0) -tr chemin_Win lieu_Enigme*1 connaissance_Reussite*1 -> lieu_Succes*1 connaissance_Reussite*1 -tr chemin_Loose lieu_Enigme*1 objet_tentative*0 objet_tentative_neg*3 -> lieu_Echec*1 objet_tentative*0 objet_tentative_neg*3 -tr interaction_Parler_Sphinx lieu_Enigme*1 connaissance_Reussite_neg*1 objet_tentative*1 -> personne_Sphinx*1 connaissance_Reussite_neg*1 objet_tentative*1 +tr chemin_Win_0 lieu_Enigme*1 connaissance_Reussite*1 -> lieu_Succes*1 connaissance_Reussite*1 +tr chemin_Loose_0 lieu_Enigme*1 objet_tentative*0 objet_tentative_neg*3 -> lieu_Echec*1 objet_tentative*0 objet_tentative_neg*3 +tr interaction_Parler_Sphinx_0 lieu_Enigme*1 connaissance_Reussite_neg*1 objet_tentative*1 -> personne_Sphinx*1 connaissance_Reussite_neg*1 objet_tentative*1 tr action_Reponse_1 personne_Sphinx*1 connaissance_Reussite_neg*1 -> lieu_Enigme*1 connaissance_Reussite*1 tr action_Reponse_2 personne_Sphinx*1 objet_tentative*1 -> lieu_Enigme*1 objet_tentative_neg*1 taille*1 diff --git a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGame.g b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGame.g index effa784..d827adb 100644 --- a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGame.g +++ b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGame.g @@ -8208,9 +8208,13 @@ rule__ConditionConnaissance__ConnaissanceAssignment_1 } : ( - { before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); } - RULE_ID - { after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); } + { before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } + ( + { before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1()); } + RULE_ID + { after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1()); } + ) + { after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } ) ; finally { @@ -8223,9 +8227,13 @@ rule__ConditionObjet__ObjetAssignment_0 } : ( - { before(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); } - RULE_ID - { after(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); } + { before(grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } + ( + { before(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1()); } + RULE_ID + { after(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1()); } + ) + { after(grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } ) ; finally { diff --git a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameLexer.java b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameLexer.java index 69c2e83..74af28c 100644 --- a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameLexer.java +++ b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameLexer.java @@ -808,10 +808,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_COMPARATEUR; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8265:18: ( ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) ) - // InternalGame.g:8265:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) + // InternalGame.g:8273:18: ( ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) ) + // InternalGame.g:8273:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) { - // InternalGame.g:8265:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) + // InternalGame.g:8273:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) int alt1=6; switch ( input.LA(1) ) { case '<': @@ -855,21 +855,21 @@ public class InternalGameLexer extends Lexer { switch (alt1) { case 1 : - // InternalGame.g:8265:21: '<' + // InternalGame.g:8273:21: '<' { match('<'); } break; case 2 : - // InternalGame.g:8265:25: '>' + // InternalGame.g:8273:25: '>' { match('>'); } break; case 3 : - // InternalGame.g:8265:29: '==' + // InternalGame.g:8273:29: '==' { match("=="); @@ -877,7 +877,7 @@ public class InternalGameLexer extends Lexer { } break; case 4 : - // InternalGame.g:8265:34: '<=' + // InternalGame.g:8273:34: '<=' { match("<="); @@ -885,7 +885,7 @@ public class InternalGameLexer extends Lexer { } break; case 5 : - // InternalGame.g:8265:39: '>=' + // InternalGame.g:8273:39: '>=' { match(">="); @@ -893,7 +893,7 @@ public class InternalGameLexer extends Lexer { } break; case 6 : - // InternalGame.g:8265:44: '!=' + // InternalGame.g:8273:44: '!=' { match("!="); @@ -919,10 +919,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_BOOLEAN; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8267:14: ( ( 'true' | 'false' ) ) - // InternalGame.g:8267:16: ( 'true' | 'false' ) + // InternalGame.g:8275:14: ( ( 'true' | 'false' ) ) + // InternalGame.g:8275:16: ( 'true' | 'false' ) { - // InternalGame.g:8267:16: ( 'true' | 'false' ) + // InternalGame.g:8275:16: ( 'true' | 'false' ) int alt2=2; int LA2_0 = input.LA(1); @@ -940,7 +940,7 @@ public class InternalGameLexer extends Lexer { } switch (alt2) { case 1 : - // InternalGame.g:8267:17: 'true' + // InternalGame.g:8275:17: 'true' { match("true"); @@ -948,7 +948,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:8267:24: 'false' + // InternalGame.g:8275:24: 'false' { match("false"); @@ -974,10 +974,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8269:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) - // InternalGame.g:8269:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalGame.g:8277:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalGame.g:8277:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* { - // InternalGame.g:8269:11: ( '^' )? + // InternalGame.g:8277:11: ( '^' )? int alt3=2; int LA3_0 = input.LA(1); @@ -986,7 +986,7 @@ public class InternalGameLexer extends Lexer { } switch (alt3) { case 1 : - // InternalGame.g:8269:11: '^' + // InternalGame.g:8277:11: '^' { match('^'); @@ -1004,7 +1004,7 @@ public class InternalGameLexer extends Lexer { recover(mse); throw mse;} - // InternalGame.g:8269:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalGame.g:8277:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* loop4: do { int alt4=2; @@ -1053,10 +1053,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_INT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8271:10: ( ( '0' .. '9' )+ ) - // InternalGame.g:8271:12: ( '0' .. '9' )+ + // InternalGame.g:8279:10: ( ( '0' .. '9' )+ ) + // InternalGame.g:8279:12: ( '0' .. '9' )+ { - // InternalGame.g:8271:12: ( '0' .. '9' )+ + // InternalGame.g:8279:12: ( '0' .. '9' )+ int cnt5=0; loop5: do { @@ -1070,7 +1070,7 @@ public class InternalGameLexer extends Lexer { switch (alt5) { case 1 : - // InternalGame.g:8271:13: '0' .. '9' + // InternalGame.g:8279:13: '0' .. '9' { matchRange('0','9'); @@ -1102,10 +1102,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_STRING; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8273:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) - // InternalGame.g:8273:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalGame.g:8281:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalGame.g:8281:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) { - // InternalGame.g:8273:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalGame.g:8281:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) int alt8=2; int LA8_0 = input.LA(1); @@ -1123,10 +1123,10 @@ public class InternalGameLexer extends Lexer { } switch (alt8) { case 1 : - // InternalGame.g:8273:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + // InternalGame.g:8281:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' { match('\"'); - // InternalGame.g:8273:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + // InternalGame.g:8281:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* loop6: do { int alt6=3; @@ -1142,7 +1142,7 @@ public class InternalGameLexer extends Lexer { switch (alt6) { case 1 : - // InternalGame.g:8273:21: '\\\\' . + // InternalGame.g:8281:21: '\\\\' . { match('\\'); matchAny(); @@ -1150,7 +1150,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:8273:28: ~ ( ( '\\\\' | '\"' ) ) + // InternalGame.g:8281:28: ~ ( ( '\\\\' | '\"' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1175,10 +1175,10 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:8273:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + // InternalGame.g:8281:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' { match('\''); - // InternalGame.g:8273:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + // InternalGame.g:8281:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* loop7: do { int alt7=3; @@ -1194,7 +1194,7 @@ public class InternalGameLexer extends Lexer { switch (alt7) { case 1 : - // InternalGame.g:8273:54: '\\\\' . + // InternalGame.g:8281:54: '\\\\' . { match('\\'); matchAny(); @@ -1202,7 +1202,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:8273:61: ~ ( ( '\\\\' | '\\'' ) ) + // InternalGame.g:8281:61: ~ ( ( '\\\\' | '\\'' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1245,12 +1245,12 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ML_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8275:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) - // InternalGame.g:8275:19: '/*' ( options {greedy=false; } : . )* '*/' + // InternalGame.g:8283:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalGame.g:8283:19: '/*' ( options {greedy=false; } : . )* '*/' { match("/*"); - // InternalGame.g:8275:24: ( options {greedy=false; } : . )* + // InternalGame.g:8283:24: ( options {greedy=false; } : . )* loop9: do { int alt9=2; @@ -1275,7 +1275,7 @@ public class InternalGameLexer extends Lexer { switch (alt9) { case 1 : - // InternalGame.g:8275:52: . + // InternalGame.g:8283:52: . { matchAny(); @@ -1305,12 +1305,12 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_SL_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8277:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) - // InternalGame.g:8277:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + // InternalGame.g:8285:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalGame.g:8285:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? { match("//"); - // InternalGame.g:8277:24: (~ ( ( '\\n' | '\\r' ) ) )* + // InternalGame.g:8285:24: (~ ( ( '\\n' | '\\r' ) ) )* loop10: do { int alt10=2; @@ -1323,7 +1323,7 @@ public class InternalGameLexer extends Lexer { switch (alt10) { case 1 : - // InternalGame.g:8277:24: ~ ( ( '\\n' | '\\r' ) ) + // InternalGame.g:8285:24: ~ ( ( '\\n' | '\\r' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1343,7 +1343,7 @@ public class InternalGameLexer extends Lexer { } } while (true); - // InternalGame.g:8277:40: ( ( '\\r' )? '\\n' )? + // InternalGame.g:8285:40: ( ( '\\r' )? '\\n' )? int alt12=2; int LA12_0 = input.LA(1); @@ -1352,9 +1352,9 @@ public class InternalGameLexer extends Lexer { } switch (alt12) { case 1 : - // InternalGame.g:8277:41: ( '\\r' )? '\\n' + // InternalGame.g:8285:41: ( '\\r' )? '\\n' { - // InternalGame.g:8277:41: ( '\\r' )? + // InternalGame.g:8285:41: ( '\\r' )? int alt11=2; int LA11_0 = input.LA(1); @@ -1363,7 +1363,7 @@ public class InternalGameLexer extends Lexer { } switch (alt11) { case 1 : - // InternalGame.g:8277:41: '\\r' + // InternalGame.g:8285:41: '\\r' { match('\r'); @@ -1395,10 +1395,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8279:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) - // InternalGame.g:8279:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalGame.g:8287:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalGame.g:8287:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ { - // InternalGame.g:8279:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalGame.g:8287:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ int cnt13=0; loop13: do { @@ -1452,8 +1452,8 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ANY_OTHER; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:8281:16: ( . ) - // InternalGame.g:8281:18: . + // InternalGame.g:8289:16: ( . ) + // InternalGame.g:8289:18: . { matchAny(); diff --git a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameParser.java b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameParser.java index a9798cf..0e47b91 100644 --- a/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameParser.java +++ b/workspace/fr.n7.game.xtext.ide/src-gen/fr/n7/game/xtext/ide/contentassist/antlr/internal/InternalGameParser.java @@ -1515,12 +1515,12 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { { int LA1_3 = input.LA(2); - if ( (LA1_3==RULE_COMPARATEUR) ) { - alt1=3; - } - else if ( (LA1_3==EOF||LA1_3==15||LA1_3==17||(LA1_3>=19 && LA1_3<=20)||(LA1_3>=22 && LA1_3<=23)||LA1_3==25||(LA1_3>=27 && LA1_3<=28)||(LA1_3>=32 && LA1_3<=34)||LA1_3==38||LA1_3==41||LA1_3==43||(LA1_3>=45 && LA1_3<=46)) ) { + if ( (LA1_3==EOF||LA1_3==15||LA1_3==17||(LA1_3>=19 && LA1_3<=20)||(LA1_3>=22 && LA1_3<=23)||LA1_3==25||(LA1_3>=27 && LA1_3<=28)||(LA1_3>=32 && LA1_3<=34)||LA1_3==38||LA1_3==41||LA1_3==43||(LA1_3>=45 && LA1_3<=46)) ) { alt1=2; } + else if ( (LA1_3==RULE_COMPARATEUR) ) { + alt1=3; + } else { NoViableAltException nvae = new NoViableAltException("", 1, 3, input); @@ -24160,21 +24160,29 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { // $ANTLR start "rule__ConditionConnaissance__ConnaissanceAssignment_1" - // InternalGame.g:8205:1: rule__ConditionConnaissance__ConnaissanceAssignment_1 : ( RULE_ID ) ; + // InternalGame.g:8205:1: rule__ConditionConnaissance__ConnaissanceAssignment_1 : ( ( RULE_ID ) ) ; public final void rule__ConditionConnaissance__ConnaissanceAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalGame.g:8209:1: ( ( RULE_ID ) ) - // InternalGame.g:8210:2: ( RULE_ID ) + // InternalGame.g:8209:1: ( ( ( RULE_ID ) ) ) + // InternalGame.g:8210:2: ( ( RULE_ID ) ) { - // InternalGame.g:8210:2: ( RULE_ID ) - // InternalGame.g:8211:3: RULE_ID + // InternalGame.g:8210:2: ( ( RULE_ID ) ) + // InternalGame.g:8211:3: ( RULE_ID ) { - before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); + before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); + // InternalGame.g:8212:3: ( RULE_ID ) + // InternalGame.g:8213:4: RULE_ID + { + before(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1()); match(input,RULE_ID,FOLLOW_2); - after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); + after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1()); + + } + + after(grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } @@ -24197,21 +24205,29 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { // $ANTLR start "rule__ConditionObjet__ObjetAssignment_0" - // InternalGame.g:8220:1: rule__ConditionObjet__ObjetAssignment_0 : ( RULE_ID ) ; + // InternalGame.g:8224:1: rule__ConditionObjet__ObjetAssignment_0 : ( ( RULE_ID ) ) ; public final void rule__ConditionObjet__ObjetAssignment_0() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalGame.g:8224:1: ( ( RULE_ID ) ) - // InternalGame.g:8225:2: ( RULE_ID ) + // InternalGame.g:8228:1: ( ( ( RULE_ID ) ) ) + // InternalGame.g:8229:2: ( ( RULE_ID ) ) { - // InternalGame.g:8225:2: ( RULE_ID ) - // InternalGame.g:8226:3: RULE_ID + // InternalGame.g:8229:2: ( ( RULE_ID ) ) + // InternalGame.g:8230:3: ( RULE_ID ) { - before(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); + before(grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); + // InternalGame.g:8231:3: ( RULE_ID ) + // InternalGame.g:8232:4: RULE_ID + { + before(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1()); match(input,RULE_ID,FOLLOW_2); - after(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); + after(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1()); + + } + + after(grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } @@ -24234,17 +24250,17 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { // $ANTLR start "rule__ConditionObjet__ComparateurAssignment_1" - // InternalGame.g:8235:1: rule__ConditionObjet__ComparateurAssignment_1 : ( RULE_COMPARATEUR ) ; + // InternalGame.g:8243:1: rule__ConditionObjet__ComparateurAssignment_1 : ( RULE_COMPARATEUR ) ; public final void rule__ConditionObjet__ComparateurAssignment_1() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalGame.g:8239:1: ( ( RULE_COMPARATEUR ) ) - // InternalGame.g:8240:2: ( RULE_COMPARATEUR ) + // InternalGame.g:8247:1: ( ( RULE_COMPARATEUR ) ) + // InternalGame.g:8248:2: ( RULE_COMPARATEUR ) { - // InternalGame.g:8240:2: ( RULE_COMPARATEUR ) - // InternalGame.g:8241:3: RULE_COMPARATEUR + // InternalGame.g:8248:2: ( RULE_COMPARATEUR ) + // InternalGame.g:8249:3: RULE_COMPARATEUR { before(grammarAccess.getConditionObjetAccess().getComparateurCOMPARATEURTerminalRuleCall_1_0()); match(input,RULE_COMPARATEUR,FOLLOW_2); @@ -24271,17 +24287,17 @@ public class InternalGameParser extends AbstractInternalContentAssistParser { // $ANTLR start "rule__ConditionObjet__NombreAssignment_2" - // InternalGame.g:8250:1: rule__ConditionObjet__NombreAssignment_2 : ( RULE_INT ) ; + // InternalGame.g:8258:1: rule__ConditionObjet__NombreAssignment_2 : ( RULE_INT ) ; public final void rule__ConditionObjet__NombreAssignment_2() throws RecognitionException { int stackSize = keepStackSize(); try { - // InternalGame.g:8254:1: ( ( RULE_INT ) ) - // InternalGame.g:8255:2: ( RULE_INT ) + // InternalGame.g:8262:1: ( ( RULE_INT ) ) + // InternalGame.g:8263:2: ( RULE_INT ) { - // InternalGame.g:8255:2: ( RULE_INT ) - // InternalGame.g:8256:3: RULE_INT + // InternalGame.g:8263:2: ( RULE_INT ) + // InternalGame.g:8264:3: RULE_INT { before(grammarAccess.getConditionObjetAccess().getNombreINTTerminalRuleCall_2_0()); match(input,RULE_INT,FOLLOW_2); diff --git a/workspace/fr.n7.game.xtext.ui/src-gen/fr/n7/game/xtext/ui/contentassist/AbstractGameProposalProvider.java b/workspace/fr.n7.game.xtext.ui/src-gen/fr/n7/game/xtext/ui/contentassist/AbstractGameProposalProvider.java index 15ca7ee..98489be 100644 --- a/workspace/fr.n7.game.xtext.ui/src-gen/fr/n7/game/xtext/ui/contentassist/AbstractGameProposalProvider.java +++ b/workspace/fr.n7.game.xtext.ui/src-gen/fr/n7/game/xtext/ui/contentassist/AbstractGameProposalProvider.java @@ -211,10 +211,10 @@ public abstract class AbstractGameProposalProvider extends TerminalsProposalProv // subclasses may override } public void completeConditionConnaissance_Connaissance(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { - completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor); } public void completeConditionObjet_Objet(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { - completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); + lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor); } public void completeConditionObjet_Comparateur(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) { completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor); diff --git a/workspace/fr.n7.game.xtext/model/generated/Game.ecore b/workspace/fr.n7.game.xtext/model/generated/Game.ecore index cbf2d49..663a371 100644 --- a/workspace/fr.n7.game.xtext/model/generated/Game.ecore +++ b/workspace/fr.n7.game.xtext/model/generated/Game.ecore @@ -145,10 +145,10 @@ - + - + diff --git a/workspace/fr.n7.game.xtext/model/generated/Game.genmodel b/workspace/fr.n7.game.xtext/model/generated/Game.genmodel index eb6c7a5..e8dbb59 100644 --- a/workspace/fr.n7.game.xtext/model/generated/Game.genmodel +++ b/workspace/fr.n7.game.xtext/model/generated/Game.genmodel @@ -102,10 +102,10 @@ - + - + diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/Game.xtextbin b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/Game.xtextbin index 439e779..d09e890 100644 Binary files a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/Game.xtextbin and b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/Game.xtextbin differ diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionConnaissance.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionConnaissance.java index db529bd..66408ae 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionConnaissance.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionConnaissance.java @@ -46,25 +46,25 @@ public interface ConditionConnaissance extends ConditionTest void setNegation(String value); /** - * Returns the value of the 'Connaissance' attribute. + * Returns the value of the 'Connaissance' reference. * * - * @return the value of the 'Connaissance' attribute. - * @see #setConnaissance(String) + * @return the value of the 'Connaissance' reference. + * @see #setConnaissance(Connaissance) * @see fr.n7.game.xtext.game.GamePackage#getConditionConnaissance_Connaissance() * @model * @generated */ - String getConnaissance(); + Connaissance getConnaissance(); /** - * Sets the value of the '{@link fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance Connaissance}' attribute. + * Sets the value of the '{@link fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance Connaissance}' reference. * * - * @param value the new value of the 'Connaissance' attribute. + * @param value the new value of the 'Connaissance' reference. * @see #getConnaissance() * @generated */ - void setConnaissance(String value); + void setConnaissance(Connaissance value); } // ConditionConnaissance diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionObjet.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionObjet.java index c91bc03..6981cff 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionObjet.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/ConditionObjet.java @@ -25,26 +25,26 @@ package fr.n7.game.xtext.game; public interface ConditionObjet extends ConditionTest { /** - * Returns the value of the 'Objet' attribute. + * Returns the value of the 'Objet' reference. * * - * @return the value of the 'Objet' attribute. - * @see #setObjet(String) + * @return the value of the 'Objet' reference. + * @see #setObjet(Objet) * @see fr.n7.game.xtext.game.GamePackage#getConditionObjet_Objet() * @model * @generated */ - String getObjet(); + Objet getObjet(); /** - * Sets the value of the '{@link fr.n7.game.xtext.game.ConditionObjet#getObjet Objet}' attribute. + * Sets the value of the '{@link fr.n7.game.xtext.game.ConditionObjet#getObjet Objet}' reference. * * - * @param value the new value of the 'Objet' attribute. + * @param value the new value of the 'Objet' reference. * @see #getObjet() * @generated */ - void setObjet(String value); + void setObjet(Objet value); /** * Returns the value of the 'Comparateur' attribute. diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/GamePackage.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/GamePackage.java index c3143e5..843aa88 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/GamePackage.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/GamePackage.java @@ -948,7 +948,7 @@ public interface GamePackage extends EPackage int CONDITION_CONNAISSANCE__NEGATION = CONDITION_TEST_FEATURE_COUNT + 0; /** - * The feature id for the 'Connaissance' attribute. + * The feature id for the 'Connaissance' reference. * * * @generated @@ -976,7 +976,7 @@ public interface GamePackage extends EPackage int CONDITION_OBJET = 17; /** - * The feature id for the 'Objet' attribute. + * The feature id for the 'Objet' reference. * * * @generated @@ -1887,15 +1887,15 @@ public interface GamePackage extends EPackage EAttribute getConditionConnaissance_Negation(); /** - * Returns the meta object for the attribute '{@link fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance Connaissance}'. + * Returns the meta object for the reference '{@link fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance Connaissance}'. * * - * @return the meta object for the attribute 'Connaissance'. + * @return the meta object for the reference 'Connaissance'. * @see fr.n7.game.xtext.game.ConditionConnaissance#getConnaissance() * @see #getConditionConnaissance() * @generated */ - EAttribute getConditionConnaissance_Connaissance(); + EReference getConditionConnaissance_Connaissance(); /** * Returns the meta object for class '{@link fr.n7.game.xtext.game.ConditionObjet Condition Objet}'. @@ -1908,15 +1908,15 @@ public interface GamePackage extends EPackage EClass getConditionObjet(); /** - * Returns the meta object for the attribute '{@link fr.n7.game.xtext.game.ConditionObjet#getObjet Objet}'. + * Returns the meta object for the reference '{@link fr.n7.game.xtext.game.ConditionObjet#getObjet Objet}'. * * - * @return the meta object for the attribute 'Objet'. + * @return the meta object for the reference 'Objet'. * @see fr.n7.game.xtext.game.ConditionObjet#getObjet() * @see #getConditionObjet() * @generated */ - EAttribute getConditionObjet_Objet(); + EReference getConditionObjet_Objet(); /** * Returns the meta object for the attribute '{@link fr.n7.game.xtext.game.ConditionObjet#getComparateur Comparateur}'. @@ -2646,12 +2646,12 @@ public interface GamePackage extends EPackage EAttribute CONDITION_CONNAISSANCE__NEGATION = eINSTANCE.getConditionConnaissance_Negation(); /** - * The meta object literal for the 'Connaissance' attribute feature. + * The meta object literal for the 'Connaissance' reference feature. * * * @generated */ - EAttribute CONDITION_CONNAISSANCE__CONNAISSANCE = eINSTANCE.getConditionConnaissance_Connaissance(); + EReference CONDITION_CONNAISSANCE__CONNAISSANCE = eINSTANCE.getConditionConnaissance_Connaissance(); /** * The meta object literal for the '{@link fr.n7.game.xtext.game.impl.ConditionObjetImpl Condition Objet}' class. @@ -2664,12 +2664,12 @@ public interface GamePackage extends EPackage EClass CONDITION_OBJET = eINSTANCE.getConditionObjet(); /** - * The meta object literal for the 'Objet' attribute feature. + * The meta object literal for the 'Objet' reference feature. * * * @generated */ - EAttribute CONDITION_OBJET__OBJET = eINSTANCE.getConditionObjet_Objet(); + EReference CONDITION_OBJET__OBJET = eINSTANCE.getConditionObjet_Objet(); /** * The meta object literal for the 'Comparateur' attribute feature. diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionConnaissanceImpl.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionConnaissanceImpl.java index 7ebaa6b..fea3b76 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionConnaissanceImpl.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionConnaissanceImpl.java @@ -4,11 +4,13 @@ package fr.n7.game.xtext.game.impl; import fr.n7.game.xtext.game.ConditionConnaissance; +import fr.n7.game.xtext.game.Connaissance; import fr.n7.game.xtext.game.GamePackage; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; @@ -49,24 +51,14 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond protected String negation = NEGATION_EDEFAULT; /** - * The default value of the '{@link #getConnaissance() Connaissance}' attribute. + * The cached value of the '{@link #getConnaissance() Connaissance}' reference. * * * @see #getConnaissance() * @generated * @ordered */ - protected static final String CONNAISSANCE_EDEFAULT = null; - - /** - * The cached value of the '{@link #getConnaissance() Connaissance}' attribute. - * - * - * @see #getConnaissance() - * @generated - * @ordered - */ - protected String connaissance = CONNAISSANCE_EDEFAULT; + protected Connaissance connaissance; /** * @@ -120,7 +112,27 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond * @generated */ @Override - public String getConnaissance() + public Connaissance getConnaissance() + { + if (connaissance != null && connaissance.eIsProxy()) + { + InternalEObject oldConnaissance = (InternalEObject)connaissance; + connaissance = (Connaissance)eResolveProxy(oldConnaissance); + if (connaissance != oldConnaissance) + { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE, oldConnaissance, connaissance)); + } + } + return connaissance; + } + + /** + * + * + * @generated + */ + public Connaissance basicGetConnaissance() { return connaissance; } @@ -131,9 +143,9 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond * @generated */ @Override - public void setConnaissance(String newConnaissance) + public void setConnaissance(Connaissance newConnaissance) { - String oldConnaissance = connaissance; + Connaissance oldConnaissance = connaissance; connaissance = newConnaissance; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE, oldConnaissance, connaissance)); @@ -152,7 +164,8 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond case GamePackage.CONDITION_CONNAISSANCE__NEGATION: return getNegation(); case GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE: - return getConnaissance(); + if (resolve) return getConnaissance(); + return basicGetConnaissance(); } return super.eGet(featureID, resolve, coreType); } @@ -171,7 +184,7 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond setNegation((String)newValue); return; case GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE: - setConnaissance((String)newValue); + setConnaissance((Connaissance)newValue); return; } super.eSet(featureID, newValue); @@ -191,7 +204,7 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond setNegation(NEGATION_EDEFAULT); return; case GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE: - setConnaissance(CONNAISSANCE_EDEFAULT); + setConnaissance((Connaissance)null); return; } super.eUnset(featureID); @@ -210,7 +223,7 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond case GamePackage.CONDITION_CONNAISSANCE__NEGATION: return NEGATION_EDEFAULT == null ? negation != null : !NEGATION_EDEFAULT.equals(negation); case GamePackage.CONDITION_CONNAISSANCE__CONNAISSANCE: - return CONNAISSANCE_EDEFAULT == null ? connaissance != null : !CONNAISSANCE_EDEFAULT.equals(connaissance); + return connaissance != null; } return super.eIsSet(featureID); } @@ -228,8 +241,6 @@ public class ConditionConnaissanceImpl extends ConditionTestImpl implements Cond StringBuilder result = new StringBuilder(super.toString()); result.append(" (negation: "); result.append(negation); - result.append(", connaissance: "); - result.append(connaissance); result.append(')'); return result.toString(); } diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionObjetImpl.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionObjetImpl.java index 4f3e540..b581480 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionObjetImpl.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/ConditionObjetImpl.java @@ -5,10 +5,12 @@ package fr.n7.game.xtext.game.impl; import fr.n7.game.xtext.game.ConditionObjet; import fr.n7.game.xtext.game.GamePackage; +import fr.n7.game.xtext.game.Objet; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; @@ -30,24 +32,14 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl; public class ConditionObjetImpl extends ConditionTestImpl implements ConditionObjet { /** - * The default value of the '{@link #getObjet() Objet}' attribute. + * The cached value of the '{@link #getObjet() Objet}' reference. * * * @see #getObjet() * @generated * @ordered */ - protected static final String OBJET_EDEFAULT = null; - - /** - * The cached value of the '{@link #getObjet() Objet}' attribute. - * - * - * @see #getObjet() - * @generated - * @ordered - */ - protected String objet = OBJET_EDEFAULT; + protected Objet objet; /** * The default value of the '{@link #getComparateur() Comparateur}' attribute. @@ -116,7 +108,27 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb * @generated */ @Override - public String getObjet() + public Objet getObjet() + { + if (objet != null && objet.eIsProxy()) + { + InternalEObject oldObjet = (InternalEObject)objet; + objet = (Objet)eResolveProxy(oldObjet); + if (objet != oldObjet) + { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, GamePackage.CONDITION_OBJET__OBJET, oldObjet, objet)); + } + } + return objet; + } + + /** + * + * + * @generated + */ + public Objet basicGetObjet() { return objet; } @@ -127,9 +139,9 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb * @generated */ @Override - public void setObjet(String newObjet) + public void setObjet(Objet newObjet) { - String oldObjet = objet; + Objet oldObjet = objet; objet = newObjet; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, GamePackage.CONDITION_OBJET__OBJET, oldObjet, objet)); @@ -196,7 +208,8 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb switch (featureID) { case GamePackage.CONDITION_OBJET__OBJET: - return getObjet(); + if (resolve) return getObjet(); + return basicGetObjet(); case GamePackage.CONDITION_OBJET__COMPARATEUR: return getComparateur(); case GamePackage.CONDITION_OBJET__NOMBRE: @@ -216,7 +229,7 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb switch (featureID) { case GamePackage.CONDITION_OBJET__OBJET: - setObjet((String)newValue); + setObjet((Objet)newValue); return; case GamePackage.CONDITION_OBJET__COMPARATEUR: setComparateur((String)newValue); @@ -239,7 +252,7 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb switch (featureID) { case GamePackage.CONDITION_OBJET__OBJET: - setObjet(OBJET_EDEFAULT); + setObjet((Objet)null); return; case GamePackage.CONDITION_OBJET__COMPARATEUR: setComparateur(COMPARATEUR_EDEFAULT); @@ -262,7 +275,7 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb switch (featureID) { case GamePackage.CONDITION_OBJET__OBJET: - return OBJET_EDEFAULT == null ? objet != null : !OBJET_EDEFAULT.equals(objet); + return objet != null; case GamePackage.CONDITION_OBJET__COMPARATEUR: return COMPARATEUR_EDEFAULT == null ? comparateur != null : !COMPARATEUR_EDEFAULT.equals(comparateur); case GamePackage.CONDITION_OBJET__NOMBRE: @@ -282,9 +295,7 @@ public class ConditionObjetImpl extends ConditionTestImpl implements ConditionOb if (eIsProxy()) return super.toString(); StringBuilder result = new StringBuilder(super.toString()); - result.append(" (objet: "); - result.append(objet); - result.append(", comparateur: "); + result.append(" (comparateur: "); result.append(comparateur); result.append(", nombre: "); result.append(nombre); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/GamePackageImpl.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/GamePackageImpl.java index cc5ba4b..2999fc1 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/GamePackageImpl.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/game/impl/GamePackageImpl.java @@ -1125,9 +1125,9 @@ public class GamePackageImpl extends EPackageImpl implements GamePackage * @generated */ @Override - public EAttribute getConditionConnaissance_Connaissance() + public EReference getConditionConnaissance_Connaissance() { - return (EAttribute)conditionConnaissanceEClass.getEStructuralFeatures().get(1); + return (EReference)conditionConnaissanceEClass.getEStructuralFeatures().get(1); } /** @@ -1147,9 +1147,9 @@ public class GamePackageImpl extends EPackageImpl implements GamePackage * @generated */ @Override - public EAttribute getConditionObjet_Objet() + public EReference getConditionObjet_Objet() { - return (EAttribute)conditionObjetEClass.getEStructuralFeatures().get(0); + return (EReference)conditionObjetEClass.getEStructuralFeatures().get(0); } /** @@ -1302,10 +1302,10 @@ public class GamePackageImpl extends EPackageImpl implements GamePackage conditionConnaissanceEClass = createEClass(CONDITION_CONNAISSANCE); createEAttribute(conditionConnaissanceEClass, CONDITION_CONNAISSANCE__NEGATION); - createEAttribute(conditionConnaissanceEClass, CONDITION_CONNAISSANCE__CONNAISSANCE); + createEReference(conditionConnaissanceEClass, CONDITION_CONNAISSANCE__CONNAISSANCE); conditionObjetEClass = createEClass(CONDITION_OBJET); - createEAttribute(conditionObjetEClass, CONDITION_OBJET__OBJET); + createEReference(conditionObjetEClass, CONDITION_OBJET__OBJET); createEAttribute(conditionObjetEClass, CONDITION_OBJET__COMPARATEUR); createEAttribute(conditionObjetEClass, CONDITION_OBJET__NOMBRE); } @@ -1441,10 +1441,10 @@ public class GamePackageImpl extends EPackageImpl implements GamePackage initEClass(conditionConnaissanceEClass, ConditionConnaissance.class, "ConditionConnaissance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEAttribute(getConditionConnaissance_Negation(), ecorePackage.getEString(), "negation", null, 0, 1, ConditionConnaissance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEAttribute(getConditionConnaissance_Connaissance(), ecorePackage.getEString(), "connaissance", null, 0, 1, ConditionConnaissance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getConditionConnaissance_Connaissance(), this.getConnaissance(), null, "connaissance", null, 0, 1, ConditionConnaissance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(conditionObjetEClass, ConditionObjet.class, "ConditionObjet", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEAttribute(getConditionObjet_Objet(), ecorePackage.getEString(), "objet", null, 0, 1, ConditionObjet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getConditionObjet_Objet(), this.getObjet(), null, "objet", null, 0, 1, ConditionObjet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getConditionObjet_Comparateur(), ecorePackage.getEString(), "comparateur", null, 0, 1, ConditionObjet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getConditionObjet_Nombre(), ecorePackage.getEInt(), "nombre", null, 0, 1, ConditionObjet.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGame.g b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGame.g index 3bc2abc..bbae9f2 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGame.g +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGame.g @@ -2171,19 +2171,14 @@ ruleConditionConnaissance returns [EObject current=null] )? ( ( - lv_connaissance_1_0=RULE_ID - { - newLeafNode(lv_connaissance_1_0, grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); - } { if ($current==null) { $current = createModelElement(grammarAccess.getConditionConnaissanceRule()); } - setWithLastConsumed( - $current, - "connaissance", - lv_connaissance_1_0, - "org.eclipse.xtext.common.Terminals.ID"); + } + otherlv_1=RULE_ID + { + newLeafNode(otherlv_1, grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } ) ) @@ -2208,19 +2203,14 @@ ruleConditionObjet returns [EObject current=null] ( ( ( - lv_objet_0_0=RULE_ID - { - newLeafNode(lv_objet_0_0, grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); - } { if ($current==null) { $current = createModelElement(grammarAccess.getConditionObjetRule()); } - setWithLastConsumed( - $current, - "objet", - lv_objet_0_0, - "org.eclipse.xtext.common.Terminals.ID"); + } + otherlv_0=RULE_ID + { + newLeafNode(otherlv_0, grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } ) ) diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameLexer.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameLexer.java index 57b12f7..4179722 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameLexer.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameLexer.java @@ -808,10 +808,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_COMPARATEUR; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2266:18: ( ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) ) - // InternalGame.g:2266:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) + // InternalGame.g:2256:18: ( ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) ) + // InternalGame.g:2256:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) { - // InternalGame.g:2266:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) + // InternalGame.g:2256:20: ( '<' | '>' | '==' | '<=' | '>=' | '!=' ) int alt1=6; switch ( input.LA(1) ) { case '<': @@ -855,21 +855,21 @@ public class InternalGameLexer extends Lexer { switch (alt1) { case 1 : - // InternalGame.g:2266:21: '<' + // InternalGame.g:2256:21: '<' { match('<'); } break; case 2 : - // InternalGame.g:2266:25: '>' + // InternalGame.g:2256:25: '>' { match('>'); } break; case 3 : - // InternalGame.g:2266:29: '==' + // InternalGame.g:2256:29: '==' { match("=="); @@ -877,7 +877,7 @@ public class InternalGameLexer extends Lexer { } break; case 4 : - // InternalGame.g:2266:34: '<=' + // InternalGame.g:2256:34: '<=' { match("<="); @@ -885,7 +885,7 @@ public class InternalGameLexer extends Lexer { } break; case 5 : - // InternalGame.g:2266:39: '>=' + // InternalGame.g:2256:39: '>=' { match(">="); @@ -893,7 +893,7 @@ public class InternalGameLexer extends Lexer { } break; case 6 : - // InternalGame.g:2266:44: '!=' + // InternalGame.g:2256:44: '!=' { match("!="); @@ -919,10 +919,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_BOOLEAN; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2268:14: ( ( 'true' | 'false' ) ) - // InternalGame.g:2268:16: ( 'true' | 'false' ) + // InternalGame.g:2258:14: ( ( 'true' | 'false' ) ) + // InternalGame.g:2258:16: ( 'true' | 'false' ) { - // InternalGame.g:2268:16: ( 'true' | 'false' ) + // InternalGame.g:2258:16: ( 'true' | 'false' ) int alt2=2; int LA2_0 = input.LA(1); @@ -940,7 +940,7 @@ public class InternalGameLexer extends Lexer { } switch (alt2) { case 1 : - // InternalGame.g:2268:17: 'true' + // InternalGame.g:2258:17: 'true' { match("true"); @@ -948,7 +948,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:2268:24: 'false' + // InternalGame.g:2258:24: 'false' { match("false"); @@ -974,10 +974,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ID; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2270:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) - // InternalGame.g:2270:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalGame.g:2260:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* ) + // InternalGame.g:2260:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* { - // InternalGame.g:2270:11: ( '^' )? + // InternalGame.g:2260:11: ( '^' )? int alt3=2; int LA3_0 = input.LA(1); @@ -986,7 +986,7 @@ public class InternalGameLexer extends Lexer { } switch (alt3) { case 1 : - // InternalGame.g:2270:11: '^' + // InternalGame.g:2260:11: '^' { match('^'); @@ -1004,7 +1004,7 @@ public class InternalGameLexer extends Lexer { recover(mse); throw mse;} - // InternalGame.g:2270:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* + // InternalGame.g:2260:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* loop4: do { int alt4=2; @@ -1053,10 +1053,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_INT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2272:10: ( ( '0' .. '9' )+ ) - // InternalGame.g:2272:12: ( '0' .. '9' )+ + // InternalGame.g:2262:10: ( ( '0' .. '9' )+ ) + // InternalGame.g:2262:12: ( '0' .. '9' )+ { - // InternalGame.g:2272:12: ( '0' .. '9' )+ + // InternalGame.g:2262:12: ( '0' .. '9' )+ int cnt5=0; loop5: do { @@ -1070,7 +1070,7 @@ public class InternalGameLexer extends Lexer { switch (alt5) { case 1 : - // InternalGame.g:2272:13: '0' .. '9' + // InternalGame.g:2262:13: '0' .. '9' { matchRange('0','9'); @@ -1102,10 +1102,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_STRING; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2274:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) - // InternalGame.g:2274:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalGame.g:2264:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) ) + // InternalGame.g:2264:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) { - // InternalGame.g:2274:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) + // InternalGame.g:2264:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' ) int alt8=2; int LA8_0 = input.LA(1); @@ -1123,10 +1123,10 @@ public class InternalGameLexer extends Lexer { } switch (alt8) { case 1 : - // InternalGame.g:2274:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' + // InternalGame.g:2264:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* '\"' { match('\"'); - // InternalGame.g:2274:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* + // InternalGame.g:2264:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* loop6: do { int alt6=3; @@ -1142,7 +1142,7 @@ public class InternalGameLexer extends Lexer { switch (alt6) { case 1 : - // InternalGame.g:2274:21: '\\\\' . + // InternalGame.g:2264:21: '\\\\' . { match('\\'); matchAny(); @@ -1150,7 +1150,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:2274:28: ~ ( ( '\\\\' | '\"' ) ) + // InternalGame.g:2264:28: ~ ( ( '\\\\' | '\"' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1175,10 +1175,10 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:2274:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' + // InternalGame.g:2264:48: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* '\\'' { match('\''); - // InternalGame.g:2274:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* + // InternalGame.g:2264:53: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* loop7: do { int alt7=3; @@ -1194,7 +1194,7 @@ public class InternalGameLexer extends Lexer { switch (alt7) { case 1 : - // InternalGame.g:2274:54: '\\\\' . + // InternalGame.g:2264:54: '\\\\' . { match('\\'); matchAny(); @@ -1202,7 +1202,7 @@ public class InternalGameLexer extends Lexer { } break; case 2 : - // InternalGame.g:2274:61: ~ ( ( '\\\\' | '\\'' ) ) + // InternalGame.g:2264:61: ~ ( ( '\\\\' | '\\'' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1245,12 +1245,12 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ML_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2276:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) - // InternalGame.g:2276:19: '/*' ( options {greedy=false; } : . )* '*/' + // InternalGame.g:2266:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) + // InternalGame.g:2266:19: '/*' ( options {greedy=false; } : . )* '*/' { match("/*"); - // InternalGame.g:2276:24: ( options {greedy=false; } : . )* + // InternalGame.g:2266:24: ( options {greedy=false; } : . )* loop9: do { int alt9=2; @@ -1275,7 +1275,7 @@ public class InternalGameLexer extends Lexer { switch (alt9) { case 1 : - // InternalGame.g:2276:52: . + // InternalGame.g:2266:52: . { matchAny(); @@ -1305,12 +1305,12 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_SL_COMMENT; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2278:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) - // InternalGame.g:2278:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? + // InternalGame.g:2268:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) + // InternalGame.g:2268:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? { match("//"); - // InternalGame.g:2278:24: (~ ( ( '\\n' | '\\r' ) ) )* + // InternalGame.g:2268:24: (~ ( ( '\\n' | '\\r' ) ) )* loop10: do { int alt10=2; @@ -1323,7 +1323,7 @@ public class InternalGameLexer extends Lexer { switch (alt10) { case 1 : - // InternalGame.g:2278:24: ~ ( ( '\\n' | '\\r' ) ) + // InternalGame.g:2268:24: ~ ( ( '\\n' | '\\r' ) ) { if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { input.consume(); @@ -1343,7 +1343,7 @@ public class InternalGameLexer extends Lexer { } } while (true); - // InternalGame.g:2278:40: ( ( '\\r' )? '\\n' )? + // InternalGame.g:2268:40: ( ( '\\r' )? '\\n' )? int alt12=2; int LA12_0 = input.LA(1); @@ -1352,9 +1352,9 @@ public class InternalGameLexer extends Lexer { } switch (alt12) { case 1 : - // InternalGame.g:2278:41: ( '\\r' )? '\\n' + // InternalGame.g:2268:41: ( '\\r' )? '\\n' { - // InternalGame.g:2278:41: ( '\\r' )? + // InternalGame.g:2268:41: ( '\\r' )? int alt11=2; int LA11_0 = input.LA(1); @@ -1363,7 +1363,7 @@ public class InternalGameLexer extends Lexer { } switch (alt11) { case 1 : - // InternalGame.g:2278:41: '\\r' + // InternalGame.g:2268:41: '\\r' { match('\r'); @@ -1395,10 +1395,10 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_WS; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2280:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) - // InternalGame.g:2280:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalGame.g:2270:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ ) + // InternalGame.g:2270:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ { - // InternalGame.g:2280:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ + // InternalGame.g:2270:11: ( ' ' | '\\t' | '\\r' | '\\n' )+ int cnt13=0; loop13: do { @@ -1452,8 +1452,8 @@ public class InternalGameLexer extends Lexer { try { int _type = RULE_ANY_OTHER; int _channel = DEFAULT_TOKEN_CHANNEL; - // InternalGame.g:2282:16: ( . ) - // InternalGame.g:2282:18: . + // InternalGame.g:2272:16: ( . ) + // InternalGame.g:2272:18: . { matchAny(); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameParser.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameParser.java index 4ddf2d9..e1633f4 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameParser.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/parser/antlr/internal/InternalGameParser.java @@ -4872,22 +4872,22 @@ public class InternalGameParser extends AbstractInternalAntlrParser { // $ANTLR start "ruleConditionConnaissance" - // InternalGame.g:2150:1: ruleConditionConnaissance returns [EObject current=null] : ( ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) ) ; + // InternalGame.g:2150:1: ruleConditionConnaissance returns [EObject current=null] : ( ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) ) ; public final EObject ruleConditionConnaissance() throws RecognitionException { EObject current = null; Token lv_negation_0_0=null; - Token lv_connaissance_1_0=null; + Token otherlv_1=null; enterRule(); try { - // InternalGame.g:2156:2: ( ( ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) ) ) - // InternalGame.g:2157:2: ( ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) ) + // InternalGame.g:2156:2: ( ( ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) ) ) + // InternalGame.g:2157:2: ( ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) ) { - // InternalGame.g:2157:2: ( ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) ) - // InternalGame.g:2158:3: ( (lv_negation_0_0= '!' ) )? ( (lv_connaissance_1_0= RULE_ID ) ) + // InternalGame.g:2157:2: ( ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) ) + // InternalGame.g:2158:3: ( (lv_negation_0_0= '!' ) )? ( (otherlv_1= RULE_ID ) ) { // InternalGame.g:2158:3: ( (lv_negation_0_0= '!' ) )? int alt33=2; @@ -4922,25 +4922,20 @@ public class InternalGameParser extends AbstractInternalAntlrParser { } - // InternalGame.g:2172:3: ( (lv_connaissance_1_0= RULE_ID ) ) - // InternalGame.g:2173:4: (lv_connaissance_1_0= RULE_ID ) + // InternalGame.g:2172:3: ( (otherlv_1= RULE_ID ) ) + // InternalGame.g:2173:4: (otherlv_1= RULE_ID ) { - // InternalGame.g:2173:4: (lv_connaissance_1_0= RULE_ID ) - // InternalGame.g:2174:5: lv_connaissance_1_0= RULE_ID + // InternalGame.g:2173:4: (otherlv_1= RULE_ID ) + // InternalGame.g:2174:5: otherlv_1= RULE_ID { - lv_connaissance_1_0=(Token)match(input,RULE_ID,FOLLOW_2); - - newLeafNode(lv_connaissance_1_0, grammarAccess.getConditionConnaissanceAccess().getConnaissanceIDTerminalRuleCall_1_0()); - if (current==null) { current = createModelElement(grammarAccess.getConditionConnaissanceRule()); } - setWithLastConsumed( - current, - "connaissance", - lv_connaissance_1_0, - "org.eclipse.xtext.common.Terminals.ID"); + + otherlv_1=(Token)match(input,RULE_ID,FOLLOW_2); + + newLeafNode(otherlv_1, grammarAccess.getConditionConnaissanceAccess().getConnaissanceConnaissanceCrossReference_1_0()); } @@ -4971,7 +4966,7 @@ public class InternalGameParser extends AbstractInternalAntlrParser { // $ANTLR start "entryRuleConditionObjet" - // InternalGame.g:2194:1: entryRuleConditionObjet returns [EObject current=null] : iv_ruleConditionObjet= ruleConditionObjet EOF ; + // InternalGame.g:2189:1: entryRuleConditionObjet returns [EObject current=null] : iv_ruleConditionObjet= ruleConditionObjet EOF ; public final EObject entryRuleConditionObjet() throws RecognitionException { EObject current = null; @@ -4979,8 +4974,8 @@ public class InternalGameParser extends AbstractInternalAntlrParser { try { - // InternalGame.g:2194:55: (iv_ruleConditionObjet= ruleConditionObjet EOF ) - // InternalGame.g:2195:2: iv_ruleConditionObjet= ruleConditionObjet EOF + // InternalGame.g:2189:55: (iv_ruleConditionObjet= ruleConditionObjet EOF ) + // InternalGame.g:2190:2: iv_ruleConditionObjet= ruleConditionObjet EOF { newCompositeNode(grammarAccess.getConditionObjetRule()); pushFollow(FOLLOW_1); @@ -5007,11 +5002,11 @@ public class InternalGameParser extends AbstractInternalAntlrParser { // $ANTLR start "ruleConditionObjet" - // InternalGame.g:2201:1: ruleConditionObjet returns [EObject current=null] : ( ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) ; + // InternalGame.g:2196:1: ruleConditionObjet returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) ; public final EObject ruleConditionObjet() throws RecognitionException { EObject current = null; - Token lv_objet_0_0=null; + Token otherlv_0=null; Token lv_comparateur_1_0=null; Token lv_nombre_2_0=null; @@ -5019,31 +5014,26 @@ public class InternalGameParser extends AbstractInternalAntlrParser { enterRule(); try { - // InternalGame.g:2207:2: ( ( ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) ) - // InternalGame.g:2208:2: ( ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) + // InternalGame.g:2202:2: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) ) + // InternalGame.g:2203:2: ( ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) { - // InternalGame.g:2208:2: ( ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) - // InternalGame.g:2209:3: ( (lv_objet_0_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) + // InternalGame.g:2203:2: ( ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) ) + // InternalGame.g:2204:3: ( (otherlv_0= RULE_ID ) ) ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) ( (lv_nombre_2_0= RULE_INT ) ) { - // InternalGame.g:2209:3: ( (lv_objet_0_0= RULE_ID ) ) - // InternalGame.g:2210:4: (lv_objet_0_0= RULE_ID ) + // InternalGame.g:2204:3: ( (otherlv_0= RULE_ID ) ) + // InternalGame.g:2205:4: (otherlv_0= RULE_ID ) { - // InternalGame.g:2210:4: (lv_objet_0_0= RULE_ID ) - // InternalGame.g:2211:5: lv_objet_0_0= RULE_ID + // InternalGame.g:2205:4: (otherlv_0= RULE_ID ) + // InternalGame.g:2206:5: otherlv_0= RULE_ID { - lv_objet_0_0=(Token)match(input,RULE_ID,FOLLOW_43); - - newLeafNode(lv_objet_0_0, grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0()); - if (current==null) { current = createModelElement(grammarAccess.getConditionObjetRule()); } - setWithLastConsumed( - current, - "objet", - lv_objet_0_0, - "org.eclipse.xtext.common.Terminals.ID"); + + otherlv_0=(Token)match(input,RULE_ID,FOLLOW_43); + + newLeafNode(otherlv_0, grammarAccess.getConditionObjetAccess().getObjetObjetCrossReference_0_0()); } @@ -5051,11 +5041,11 @@ public class InternalGameParser extends AbstractInternalAntlrParser { } - // InternalGame.g:2227:3: ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) - // InternalGame.g:2228:4: (lv_comparateur_1_0= RULE_COMPARATEUR ) + // InternalGame.g:2217:3: ( (lv_comparateur_1_0= RULE_COMPARATEUR ) ) + // InternalGame.g:2218:4: (lv_comparateur_1_0= RULE_COMPARATEUR ) { - // InternalGame.g:2228:4: (lv_comparateur_1_0= RULE_COMPARATEUR ) - // InternalGame.g:2229:5: lv_comparateur_1_0= RULE_COMPARATEUR + // InternalGame.g:2218:4: (lv_comparateur_1_0= RULE_COMPARATEUR ) + // InternalGame.g:2219:5: lv_comparateur_1_0= RULE_COMPARATEUR { lv_comparateur_1_0=(Token)match(input,RULE_COMPARATEUR,FOLLOW_12); @@ -5077,11 +5067,11 @@ public class InternalGameParser extends AbstractInternalAntlrParser { } - // InternalGame.g:2245:3: ( (lv_nombre_2_0= RULE_INT ) ) - // InternalGame.g:2246:4: (lv_nombre_2_0= RULE_INT ) + // InternalGame.g:2235:3: ( (lv_nombre_2_0= RULE_INT ) ) + // InternalGame.g:2236:4: (lv_nombre_2_0= RULE_INT ) { - // InternalGame.g:2246:4: (lv_nombre_2_0= RULE_INT ) - // InternalGame.g:2247:5: lv_nombre_2_0= RULE_INT + // InternalGame.g:2236:4: (lv_nombre_2_0= RULE_INT ) + // InternalGame.g:2237:5: lv_nombre_2_0= RULE_INT { lv_nombre_2_0=(Token)match(input,RULE_INT,FOLLOW_2); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/serializer/GameSemanticSequencer.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/serializer/GameSemanticSequencer.java index 24386e6..e3e4de6 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/serializer/GameSemanticSequencer.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/serializer/GameSemanticSequencer.java @@ -171,7 +171,7 @@ public class GameSemanticSequencer extends AbstractDelegatingSemanticSequencer { * ConditionConnaissance returns ConditionConnaissance * * Constraint: - * (negation='!'? connaissance=ID) + * (negation='!'? connaissance=[Connaissance|ID]) */ protected void sequence_ConditionConnaissance(ISerializationContext context, ConditionConnaissance semanticObject) { genericSequencer.createSequence(context, semanticObject); @@ -196,7 +196,7 @@ public class GameSemanticSequencer extends AbstractDelegatingSemanticSequencer { * ConditionObjet returns ConditionObjet * * Constraint: - * (objet=ID comparateur=COMPARATEUR nombre=INT) + * (objet=[Objet|ID] comparateur=COMPARATEUR nombre=INT) */ protected void sequence_ConditionObjet(ISerializationContext context, ConditionObjet semanticObject) { if (errorAcceptor != null) { @@ -208,7 +208,7 @@ public class GameSemanticSequencer extends AbstractDelegatingSemanticSequencer { errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, GamePackage.Literals.CONDITION_OBJET__NOMBRE)); } SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); - feeder.accept(grammarAccess.getConditionObjetAccess().getObjetIDTerminalRuleCall_0_0(), semanticObject.getObjet()); + feeder.accept(grammarAccess.getConditionObjetAccess().getObjetObjetIDTerminalRuleCall_0_0_1(), semanticObject.eGet(GamePackage.Literals.CONDITION_OBJET__OBJET, false)); feeder.accept(grammarAccess.getConditionObjetAccess().getComparateurCOMPARATEURTerminalRuleCall_1_0(), semanticObject.getComparateur()); feeder.accept(grammarAccess.getConditionObjetAccess().getNombreINTTerminalRuleCall_2_0(), semanticObject.getNombre()); feeder.finish(); diff --git a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/services/GameGrammarAccess.java b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/services/GameGrammarAccess.java index 5e77df6..7c82662 100644 --- a/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/services/GameGrammarAccess.java +++ b/workspace/fr.n7.game.xtext/src-gen/fr/n7/game/xtext/services/GameGrammarAccess.java @@ -1564,13 +1564,14 @@ public class GameGrammarAccess extends AbstractElementFinder.AbstractGrammarElem private final Assignment cNegationAssignment_0 = (Assignment)cGroup.eContents().get(0); private final Keyword cNegationExclamationMarkKeyword_0_0 = (Keyword)cNegationAssignment_0.eContents().get(0); private final Assignment cConnaissanceAssignment_1 = (Assignment)cGroup.eContents().get(1); - private final RuleCall cConnaissanceIDTerminalRuleCall_1_0 = (RuleCall)cConnaissanceAssignment_1.eContents().get(0); + private final CrossReference cConnaissanceConnaissanceCrossReference_1_0 = (CrossReference)cConnaissanceAssignment_1.eContents().get(0); + private final RuleCall cConnaissanceConnaissanceIDTerminalRuleCall_1_0_1 = (RuleCall)cConnaissanceConnaissanceCrossReference_1_0.eContents().get(1); //ConditionConnaissance: - // negation='!'? connaissance=ID; + // negation='!'? connaissance=[Connaissance]; @Override public ParserRule getRule() { return rule; } - //negation='!'? connaissance=ID + //negation='!'? connaissance=[Connaissance] public Group getGroup() { return cGroup; } //negation='!'? @@ -1579,34 +1580,41 @@ public class GameGrammarAccess extends AbstractElementFinder.AbstractGrammarElem //'!' public Keyword getNegationExclamationMarkKeyword_0_0() { return cNegationExclamationMarkKeyword_0_0; } - //connaissance=ID + //connaissance=[Connaissance] public Assignment getConnaissanceAssignment_1() { return cConnaissanceAssignment_1; } + //[Connaissance] + public CrossReference getConnaissanceConnaissanceCrossReference_1_0() { return cConnaissanceConnaissanceCrossReference_1_0; } + //ID - public RuleCall getConnaissanceIDTerminalRuleCall_1_0() { return cConnaissanceIDTerminalRuleCall_1_0; } + public RuleCall getConnaissanceConnaissanceIDTerminalRuleCall_1_0_1() { return cConnaissanceConnaissanceIDTerminalRuleCall_1_0_1; } } public class ConditionObjetElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "fr.n7.game.xtext.Game.ConditionObjet"); private final Group cGroup = (Group)rule.eContents().get(1); private final Assignment cObjetAssignment_0 = (Assignment)cGroup.eContents().get(0); - private final RuleCall cObjetIDTerminalRuleCall_0_0 = (RuleCall)cObjetAssignment_0.eContents().get(0); + private final CrossReference cObjetObjetCrossReference_0_0 = (CrossReference)cObjetAssignment_0.eContents().get(0); + private final RuleCall cObjetObjetIDTerminalRuleCall_0_0_1 = (RuleCall)cObjetObjetCrossReference_0_0.eContents().get(1); private final Assignment cComparateurAssignment_1 = (Assignment)cGroup.eContents().get(1); private final RuleCall cComparateurCOMPARATEURTerminalRuleCall_1_0 = (RuleCall)cComparateurAssignment_1.eContents().get(0); private final Assignment cNombreAssignment_2 = (Assignment)cGroup.eContents().get(2); private final RuleCall cNombreINTTerminalRuleCall_2_0 = (RuleCall)cNombreAssignment_2.eContents().get(0); //ConditionObjet: - // objet=ID comparateur=COMPARATEUR nombre=INT; + // objet=[Objet] comparateur=COMPARATEUR nombre=INT; @Override public ParserRule getRule() { return rule; } - //objet=ID comparateur=COMPARATEUR nombre=INT + //objet=[Objet] comparateur=COMPARATEUR nombre=INT public Group getGroup() { return cGroup; } - //objet=ID + //objet=[Objet] public Assignment getObjetAssignment_0() { return cObjetAssignment_0; } + //[Objet] + public CrossReference getObjetObjetCrossReference_0_0() { return cObjetObjetCrossReference_0_0; } + //ID - public RuleCall getObjetIDTerminalRuleCall_0_0() { return cObjetIDTerminalRuleCall_0_0; } + public RuleCall getObjetObjetIDTerminalRuleCall_0_0_1() { return cObjetObjetIDTerminalRuleCall_0_0_1; } //comparateur=COMPARATEUR public Assignment getComparateurAssignment_1() { return cComparateurAssignment_1; } @@ -1911,7 +1919,7 @@ public class GameGrammarAccess extends AbstractElementFinder.AbstractGrammarElem } //ConditionConnaissance: - // negation='!'? connaissance=ID; + // negation='!'? connaissance=[Connaissance]; public ConditionConnaissanceElements getConditionConnaissanceAccess() { return pConditionConnaissance; } @@ -1921,7 +1929,7 @@ public class GameGrammarAccess extends AbstractElementFinder.AbstractGrammarElem } //ConditionObjet: - // objet=ID comparateur=COMPARATEUR nombre=INT; + // objet=[Objet] comparateur=COMPARATEUR nombre=INT; public ConditionObjetElements getConditionObjetAccess() { return pConditionObjet; } diff --git a/workspace/fr.n7.game.xtext/src/fr/n7/game/xtext/Game.xtext b/workspace/fr.n7.game.xtext/src/fr/n7/game/xtext/Game.xtext index 80a548e..28534fa 100644 --- a/workspace/fr.n7.game.xtext/src/fr/n7/game/xtext/Game.xtext +++ b/workspace/fr.n7.game.xtext/src/fr/n7/game/xtext/Game.xtext @@ -99,33 +99,33 @@ Description: ; Condition: - condition+=ConditionEt ('||' condition+=ConditionEt)* + condition+=ConditionEt ('||' condition+=ConditionEt)* ; ConditionEt: - conditionTest+=ConditionTest ('&&' conditionTest+=ConditionTest)* + conditionTest+=ConditionTest ('&&' conditionTest+=ConditionTest)* ; ConditionTest: - ConditionBoolean | ConditionConnaissance | ConditionObjet + ConditionBoolean | ConditionConnaissance | ConditionObjet ; ConditionBoolean: - valeur=BOOLEAN + valeur=BOOLEAN ; ConditionConnaissance: - (negation='!')? connaissance=ID + (negation='!')? connaissance=[Connaissance] ; ConditionObjet: - objet=ID comparateur=COMPARATEUR nombre=INT + objet=[Objet] comparateur=COMPARATEUR nombre=INT ; terminal COMPARATEUR: - '<' | '>' | '==' | '<=' | '>=' | '!=' + '<' | '>' | '==' | '<=' | '>=' | '!=' ; terminal BOOLEAN: - 'true' | 'false' + 'true' | 'false' ;