diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup index c436e4a2e1c65719731d34f834e0647c1143cbd8..44f86cb58e62f647bd821eab6f9929c98c19a22c 100644 --- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup +++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup @@ -16,7 +16,7 @@ terminal LOSSY_F, MAXSIZE_F, PRIVATE_F, RELATION_F, BLOCK1_F, BLOCK2_F, POOL_F, // Communications terminal RELATION_T, SYNCREL_T, BFIFOREL_T, NBFIFOREL_T, INMESSAGE_T, OUTMESSAGE_T, CHANNEL_T, FIFO_T, BFIFO_T, - NBFIFO_T, SYNC_T; + NBFIFO_T, SYNC_T, INSIGNALBINDING_T, OUTSIGNALBINDING_T; // Transition server terminal NOKREQUEST_U, TRIVIALREQUEST_T, IMMEDIATEREQUEST_U, SENDREQUEST_T, RECEIVEREQUEST_T; @@ -83,10 +83,23 @@ channelDecl ::= syncChDecl | nbfChDecl |bfChDecl; syncChDecl ::= syncChDeclHEADER syncChDeclBODY; nbfChDecl ::= nbfChDeclHEADER fifofChDeclBODY; bfChDecl ::= bfChDeclHEADER fifoChDeclBODY; - | signalBind - | messageDecl - | blockDecl - | blockAlias +signalBinding ::= inSignalBinding | outSignalBinding; +insignalBinding ::= insignalBindingHEADER insignalBindingBODY; +outsignalBinding ::= outsignalBindingHEADER outsignalBindingBODY; +messageDecl ::= inMessageDecl | outMessageDecl; +inMessageDecl ::= inMessageDeclHEADER inMessageDeclBODY; +outMessageDecl ::= outMessageDeclHEADER outMessageDeclBODY; +blockDecl ::= blockDeclHEADER blockDeclBODY; + +blockAlias ::= + | PART BLOCKNAME EQ blockChain + | PART AVATARNAME EQ blockChain +; +blockChain::= + | BLOCKNAME + | AVATARNAME + | BLOCKNAME blockChain + | AVATARNAME blockChain ; datatypeDeclHEADER ::= | ATTRIBUTE DEF DATATYPENAME SPECIALIZES AVDATATYPE @@ -116,4 +129,25 @@ nbfChDeclHEADER ::= | PART CHANNELNAME SPECIALIZES NBFIFO_T | PART AVATARNAME SPECIALIZES NBFIFO_T ; - +insignalBindingHEADER ::= + | BINDING COLON INSIGNALBINDING_T + | BINDING AVATARNAME COLON INSIGNALBINDING_T +; +outsignalBindingHEADER ::= + | BINDING COLON OUTSIGNALBINDING_T + | BINDING AVATARNAME COLON INSIGNALBINDING_T +; +inMessageDeclHEADER ::= + | PART DEF MESSAGENAME SPECIALIZES INMESSAGE_T + | PART DEF AVATARNAME SPECIALIZES INMESSAGE_T +; +outMessageDeclHEADER ::= + | PART DEF MESSAGENAME SPECIALIZES OUTMESSAGE_T COMMA MESSAGENAME + | PART DEF AVATARNAME SPECIALIZES OUTMESSAGE_T COMMA MESSAGENAME + | PART DEF MESSAGENAME SPECIALIZES MESSAGENAME COMMA OUTMESSAGE_T + | PART DEF AVATARNAME SPECIALIZES MESSAGENAME COMMA OUTMESSAGE_T +; +blockDeclHEADER ::= + | PART DEF BLOCKNAME SPECIALIZES AVBLOCK_T + | PART DEF AVATARNAME SPECIALIZES AVBLOCK_T +; \ No newline at end of file diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex index a674bde092171f0a70798d0ed8d8a042a0521769..ab8ed8a7cf52b0c75f4c9491002339c318814488 100644 --- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex +++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex @@ -119,6 +119,8 @@ expireTimerChannelName = "'@ch:expire." AvIdent "'" "'#Bfifo'" { return new Symbol(XX#Symb.BFIFO_T, yyline, yycolumn); } "'#NBfifo'" { return new Symbol(XX#Symb.NBFIFO_T, yyline, yycolumn); } "'#Sync'" { return new Symbol(XX#Symb.SYNC_T, yyline, yycolumn); } + "'#InSignalBinding'" { return new Symbol(XX#Symb.INSIGNALBINDING_T, yyline, yycolumn); } + "'#OutSignalBinding'" { return new Symbol(XX#Symb.OUTSIGNALBINDING_T, yyline, yycolumn); } "'#nok_request'" { return new Symbol(XX#Symb.NOKREQUEST_U, yyline, yycolumn); } "'#TrivialRequest'" { return new Symbol(XX#Symb.TRIVIALREQUEST_T, yyline, yycolumn); }