diff --git a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java index c675dac9ec410e65774c032b97d412070e794ccf..e16fa4bbf12ca626a6e2dc32ba89ce528cd95d21 100644 --- a/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java +++ b/src/main/java/avatartranslator/tosysmlv2/Avatar2SysML.java @@ -334,15 +334,13 @@ public class Avatar2SysML { avsysml.append(indent + "part " + channelSYSMLname + " : " + channelConstructor + " = " + channelConstructor + "('@relation' = " + relationSYSMLname + ");\n"); if (in2out) { - avsysml.append(indent + "bind " + blk1SysMLname + "." + sig1SYSMLname + " = " + channelSYSMLname + "{ attribute '@isInSignal' : " + - "Boolean = true; }\n"); - avsysml.append(indent + "bind " + blk2SysMLname + "." + sig2SYSMLname + " = " + channelSYSMLname + "{ attribute '@isInSignal' : " + - "Boolean = false; }\n"); + avsysml.append(indent + "binding : '#InSignalBinding' bind " + blk1SysMLname + "." + sig1SYSMLname + " = " + channelSYSMLname + + ";\n"); + avsysml.append(indent + "binding : '#OutSignalBinding' bind " + blk2SysMLname + "." + sig2SYSMLname + " = " + channelSYSMLname + + ";\n"); } else { - avsysml.append(indent + "bind " + blk1SysMLname + "." + sig1SYSMLname + " = " + channelSYSMLname + " { attribute '@isInSignal' : " + - "Boolean = false; }\n"); - avsysml.append(indent + "bind " + blk2SysMLname + "." + sig2SYSMLname + " = " + channelSYSMLname + " { attribute '@isInSignal' : " + - "Boolean = true; }\n"); + avsysml.append(indent + "binding : '#OutSignalBinding' bind " + blk1SysMLname + "." + sig1SYSMLname + " = " + channelSYSMLname + ";\n"); + avsysml.append(indent + "binding : '#InSignalBinding' bind " + blk2SysMLname + "." + sig2SYSMLname + " = " + channelSYSMLname + ";\n"); } // Message declaration ......................... diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup index b058ed82cc30f73c9c23044b09a15e02637ed316..c436e4a2e1c65719731d34f834e0647c1143cbd8 100644 --- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup +++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup @@ -2,7 +2,6 @@ package avatartranslator.fromsml; import java_cup.runtime.*; parser code {: - :} /* Terminals (tokens returned by the scanner). */ @@ -63,7 +62,7 @@ non terminal Integer iexpr, bexpr; precedence left OR; precedence left AND; -model ::= PACKAGE AVATARNAME LB featureList RB | PACKAGE AVATARNAME LB RB; +model ::= PACKAGE AVATARNAME LBRAC featureList RBRAC | PACKAGE AVATARNAME LBRAC RBRAC; featureList ::= feature | feature featureList; feature ::= @@ -88,13 +87,33 @@ bfChDecl ::= bfChDeclHEADER fifoChDeclBODY; | messageDecl | blockDecl | blockAlias - - -expr ::= - PARSE_BOOL bexpr:e {: RESULT = lexer.getExpressions().getBExpr(e.intValue()); - lexer.getExpressions().freeBool(e.intValue()); :} - | PARSE_INT iexpr:e {: RESULT = lexer.getExpressions().getIExpr(e.intValue()); - lexer.getExpressions().freeInt(e.intValue()); :} +; +datatypeDeclHEADER ::= + | ATTRIBUTE DEF DATATYPENAME SPECIALIZES AVDATATYPE + | ATTRIBUTE DEF AVATARNAME SPECIALIZES AVDATATYPE +; +syncRelDeclHEADER ::= + | PART RELATIONNAME SPECIALIZES SYNCREL_T + | PART AVATARNAME SPECIALIZES SYNCREL_T +; +bfRelDeclHEADER ::= + | PART RELATIONNAME SPECIALIZES BFIFOREL_T + | PART AVATARNAME SPECIALIZES BFIFOREL_T +; +nbfRelDeclHEADER ::= + | PART RELATIONNAME SPECIALIZES NBFIFOREL_T + | PART AVATARNAME SPECIALIZES NBFIFOREL_T +; +syncChDeclHEADER ::= + | PART CHANNELNAME SPECIALIZES SYNC_T + | PART AVATARNAME SPECIALIZES SYNC_T +; +bfChDeclHEADER ::= + | PART CHANNELNAME SPECIALIZES BFIFO_T + | PART AVATARNAME SPECIALIZES BFIFO_T +; +nbfChDeclHEADER ::= + | PART CHANNELNAME SPECIALIZES NBFIFO_T + | PART AVATARNAME SPECIALIZES NBFIFO_T ; -Spec ::= Blocs Interconnections diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex index c5e76d83c3381fad59da290e9ead077e9c640736..a674bde092171f0a70798d0ed8d8a042a0521769 100644 --- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex +++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jflex @@ -81,9 +81,9 @@ expireTimerChannelName = "'@ch:expire." AvIdent "'" catch (NumberFormatException nfe) { throw new Exception ("Lexer : Integer Format : " + yytext()); } } - "==" { return new Symbol(XX#Symb.EQ, yyline, yycolumn); } - "true" { return new Symbol(XX#Symb.TRUE, yyline, yycolumn); } - "false" { return new Symbol(XX#Symb.FALSE, yyline, yycolumn); } + "==" { return new Symbol(XX#Symb.EQ, yyline, yycolumn); } + "true" { return new Symbol(XX#Symb.TRUE, yyline, yycolumn); } + "false" { return new Symbol(XX#Symb.FALSE, yyline, yycolumn); } "(" { return new Symbol(XX#Symb.LPAR, yyline, yycolumn); } ")" { return new Symbol(XX#Symb.RPAR, yyline, yycolumn); } "{" { return new Symbol(XX#Symb.LBRAC, yyline, yycolumn); } @@ -260,6 +260,7 @@ expireTimerChannelName = "'@ch:expire." AvIdent "'" "send" { return new Symbol(XX#Symb.SEND, yyline, yycolumn); } "snapshot" { return new Symbol(XX#Symb.SNAPSHOT, yyline, yycolumn); } "specializes" { return new Symbol(XX#Symb.SPECIALIZES, yyline, yycolumn); } + ":>" { return new Symbol(XX#Symb.SPECIALIZES, yyline, yycolumn); } "stakeholder" { return new Symbol(XX#Symb.STAKEHOLDER, yyline, yycolumn); } "state" { return new Symbol(XX#Symb.STATE, yyline, yycolumn); } "subject" { return new Symbol(XX#Symb.SUBJECT, yyline, yycolumn); }