Skip to content
Snippets Groups Projects
AvatarFromSysML.jflex 23.3 KiB
Newer Older
Sophie Coudert's avatar
Sophie Coudert committed
/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
 *
 * ludovic.apvrille AT enst.fr
 *
 * This software is a computer program whose purpose is to allow the
 * edition of TURTLE analysis, design and deployment diagrams, to
 * allow the generation of RT-LOTOS or Java code from this diagram,
 * and at last to allow the analysis of formal validation traces
 * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP
 * from INRIA Rhone-Alpes.
 *
 * This software is governed by the CeCILL  license under French law and
 * abiding by the rules of distribution of free software.  You can  use,
 * modify and/ or redistribute the software under the terms of the CeCILL
 * license as circulated by CEA, CNRS and INRIA at the following URL
 * "http://www.cecill.info".
 *
 * As a counterpart to the access to the source code and  rights to copy,
 * modify and redistribute granted by the license, users are provided only
 * with a limited warranty  and the software's author,  the holder of the
 * economic rights,  and the successive licensors  have only  limited
 * liability.
 *
 * In this respect, the user's attention is drawn to the risks associated
 * with loading,  using,  modifying and/or developing or reproducing the
 * software by the user in light of its specific status of free software,
 * that may mean  that it is complicated to manipulate,  and  that  also
 * therefore means  that it is reserved for developers  and  experienced
 * professionals having in-depth computer knowledge. Users are therefore
 * encouraged to load and test the software's suitability as regards their
 * requirements in conditions enabling the security of their systems and/or
 * data to be ensured and,  more generally, to use and operate it in the
 * same conditions as regards security.
 *
 * The fact that you are presently reading this means that you have had
 * knowledge of the CeCILL license and that you accept its terms.
 */
 package avatartranslator.tosysmlv2;
import java_cup.runtime.*;
import java_cup.runtime.ComplexSymbolFactory.*;
import java.util.HashSet;
import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
%class LexerClassName
%public
%unicode
%cup
Sophie Coudert's avatar
Sophie Coudert committed
%line
%column
Sophie Coudert's avatar
Sophie Coudert committed
   return makeSymbol(#Symb.EOF);
%eofval}

%yylexthrow Exception

%{  /** create a symbol provided with current lexeme and location */
    ComplexSymbol makeSymbol(int id, Object val) {
        // System.out.print(" ##" + #Symb.terminalNames[id] + "-" + val + " " + "(" + "l:" + yyline + ",c:" + yycolumn + ")");
        return new ComplexSymbol(
            #Symb.terminalNames[id],
            id,
            new Location(yyline, yycolumn),
            new Location(yyline, yycolumn + yytext().length()),
            val);
    }
    /** create a symbol provided with current lexeme and location */
    ComplexSymbol makeSymbol(int id) {
        // System.out.print(" ##" + #Symb.terminalNames[id] + "(" + "l:" + yyline + ",c:" + yycolumn + ")");
        return new ComplexSymbol(
            #Symb.terminalNames[id],
            id,
            new Location(yyline, yycolumn),
            new Location(yyline, yycolumn + yytext().length()));
    }

    /** to memorize error location before throwing an exception */
    Location errorLocation;
    public void setErrorLocation(Location _errorLocation) { errorLocation = _errorLocation; }
    public Location getErrorLocation() { return errorLocation; }

    /** get current location. To allow parser to know location without lexeme (i.e. through empty grammar rule) */
    public Location getLocation() { return new Location(yyline, yycolumn); }
    errorLocation = null;
%init}
Space = [\ \n\r\t\f]
Natural = 0 | [1-9][0-9]*
Sophie Coudert's avatar
Sophie Coudert committed
Real = {Natural} "." 0* {Natural}

AvIdent = ("_"[a-zA-Z0-9] | [a-zA-Z])   ("_"[a-zA-Z0-9] | [a-zA-Z0-9])*    ("_")?
dataTypeName = "'@dt:" {AvIdent} "'"
blockName = "'@blk:" {AvIdent} "'"
attributeName = "'$" {AvIdent} "'"
fieldName = "'" {AvIdent} "'"
relationName = ("'@BF" | "'@NBF" | "'@SYN") {Natural} ":" {AvIdent} "-" {AvIdent} "'"
channelPreName = {AvIdent} "." {AvIdent} (">"|"<") {AvIdent} "." {AvIdent}
signalName = "'@sig:" {AvIdent} "'"
channelName = ("'@syn" | "'@bf" | "'@nbf") ":" {channelPreName} "'"
messageName = "'@MSG:" {AvIdent} "." {AvIdent} "'"
startStateName = "'@st:start'"
stopStateName = "'@st:stop'"
standardStateName = "'@st:standard." {AvIdent} "'"
Sophie Coudert's avatar
Sophie Coudert committed
choiceStateName = "'@st:standard.choice__" [0-9]* "'"
randomStateName = "'@st:random." {Natural} "'"
countStateName = "'@st:count." {AvIdent} "." {Natural} "'"
sendStateName = "'@st:send." {AvIdent} "." {Natural} "'"
receiveStateName = "'@st:receive." {AvIdent} "." {Natural} "'"
presendStateName = "'@st:presend." {AvIdent} "." {Natural} "'"
prereceiveStateName = "'@st:prereceive." {AvIdent} "." {Natural} "'"
setTimerStateName = "'@st:set." {AvIdent} "." {Natural} "'"
resetTimerStateName = "'@st:reset." {AvIdent} "." {Natural} "'"
expireTimerStateName = "'@st:expire." {AvIdent} "." {Natural} "'"
presetTimerStateName = "'@st:preset." {AvIdent} "." {Natural} "'"
preresetTimerStateName = "'@st:prereset." {AvIdent} "." {Natural} "'"
preexpireTimerStateName = "'@st:preexpire." {AvIdent} "." {Natural} "'"
timerBlockName = "'@tmr:" {AvIdent} "'"
Sophie Coudert's avatar
Sophie Coudert committed

Sophie Coudert's avatar
Sophie Coudert committed
%state COMMENTLINE
%state IMPORTITEM
Sophie Coudert's avatar
Sophie Coudert committed
<COMMENTLINE> {
 [^\n\r]+                   { break; }
 "\n"                       { yybegin(YYINITIAL); break; }
Sophie Coudert's avatar
Sophie Coudert committed
}
<IMPORTITEM> {
 [^;]+                   { break; }
 "\;"                       { yybegin(YYINITIAL); break; }
Sophie Coudert's avatar
Sophie Coudert committed
<YYINITIAL> {
 {Space}        { break; }
 "//"           { yybegin(COMMENTLINE); break; }
 {Natural}      { try { return makeSymbol(#Symb.INT, Integer.parseInt(yytext())); }
                  catch (NumberFormatException nfe) {
                    setErrorLocation(new Location(yyline, yycolumn));
                    throw new Exception ("lexing : bad format for number : " + yytext()); }
 {Real}         { try { return makeSymbol(#Symb.REAL, Double.parseDouble(yytext())); }
                  catch (NumberFormatException nfe) {
                    setErrorLocation(new Location(yyline, yycolumn));
                    throw new Exception ("lexing : bad format for number : " + yytext()); }
Sophie Coudert's avatar
Sophie Coudert committed

  "+"            { return makeSymbol(#Symb.PLUS); }
  "-"            { return makeSymbol(#Symb.MINUS); }
  "*"            { return makeSymbol(#Symb.MULT); }
  "/"            { return makeSymbol(#Symb.DIV); }
  "%"            { return makeSymbol(#Symb.MOD); }
  "&"            { return makeSymbol(#Symb.AND); }
  "|"            { return makeSymbol(#Symb.OR); }
  "!="           { return makeSymbol(#Symb.DIF); }
  "<"            { return makeSymbol(#Symb.LT); }
  ">"            { return makeSymbol(#Symb.GT); }
  "<="           { return makeSymbol(#Symb.LEQ); }
  ">="           { return makeSymbol(#Symb.GEQ); }

  "?"            { return makeSymbol(#Symb.QUEST); }
 "=="            { return makeSymbol(#Symb.EQ); }
 "true"          { return makeSymbol(#Symb.BOOL, Boolean.TRUE); }
 "false"         { return makeSymbol(#Symb.BOOL, Boolean.FALSE); }
  "("            { return makeSymbol(#Symb.LPAR); }
  ")"            { return makeSymbol(#Symb.RPAR); }
  "{"            { return makeSymbol(#Symb.LBRAC); }
  "}"            { return makeSymbol(#Symb.RBRAC); }
  ","            { return makeSymbol(#Symb.COMMA); }
  ";"            { return makeSymbol(#Symb.SEMICOLON); }
  ":"            { return makeSymbol(#Symb.COLON); }
  "."            { return makeSymbol(#Symb.POINT); }
  "::"           { return makeSymbol(#Symb.FOURPOINTS); }
  "="            { return makeSymbol(#Symb.EQUAL); }
  ":="           { return makeSymbol(#Symb.GETS); }
  [\"][^\"]*[\"]          { String s = yytext();
                      return makeSymbol(#Symb.STRING, s.substring(1, s.length() - 1)); }
  "'@max_size'"     { return makeSymbol(#Symb.MAXSIZE_F); }
  "'@private'"      { return makeSymbol(#Symb.PRIVATE_F); }
  "'@relation'"     { return makeSymbol(#Symb.RELATION_F); }
  "'@block1'"       { return makeSymbol(#Symb.BLOCK1_F); }
  "'@block2'"       { return makeSymbol(#Symb.BLOCK2_F); }
Sophie Coudert's avatar
Sophie Coudert committed
  "'@block'"       { return makeSymbol(#Symb.BLOCK_F); }
  "'@pool'"         { return makeSymbol(#Symb.POOL_F); }
  "'@request'"      { return makeSymbol(#Symb.REQUEST_F); }
  "'@state_action'" { return makeSymbol(#Symb.STATEACTION_F); }
  "'@index'"        { return makeSymbol(#Symb.INDEX_F); }
  "'@delay'"        { return makeSymbol(#Symb.DELAY_F); }
  "'@payload'"      { return makeSymbol(#Symb.PAYLOAD_F); }
  "'@channel'"      { return makeSymbol(#Symb.CHANNEL_F); }
  "'@value'"        { return makeSymbol(#Symb.VALUE_F); }
  "'@statemachine'" { return makeSymbol(#Symb.STATEMACHINE); }
  "'@set'"          { return makeSymbol(#Symb.SET_TM); }
  "'@reset'"        { return makeSymbol(#Symb.RESET_TM); }
  "'@expire'"       { return makeSymbol(#Symb.EXPIRE_TM); }
  "'@delayDistributionLaw'" { return makeSymbol(#Symb.DISTRIBUTION_A); }
  "'@weight'"      { return makeSymbol(#Symb.WEIGHT_A); }
  "'#Relation'"    { return makeSymbol(#Symb.RELATION_T); }
  "'#Sync_Rel'"    { return makeSymbol(#Symb.SYNCREL_T); }
  "'#Bfifo_Rel'"   { return makeSymbol(#Symb.BFIFOREL_T); }
  "'#NBfifo_Rel'"  { return makeSymbol(#Symb.NBFIFOREL_T); }
  "'#InMessage'"   { return makeSymbol(#Symb.INMESSAGE_T); }
  "'#OutMessage'"  { return makeSymbol(#Symb.OUTMESSAGE_T); }
  "'#Channel'"     { return makeSymbol(#Symb.CHANNEL_T); }
  "'#Fifo'"        { return makeSymbol(#Symb.FIFO_T); }
  "'#Bfifo'"       { return makeSymbol(#Symb.BFIFO_T); }
  "'#NBfifo'"      { return makeSymbol(#Symb.NBFIFO_T); }
  "'#Sync'"        { return makeSymbol(#Symb.SYNC_T); }
  "'#InSignalBinding'"  { return makeSymbol(#Symb.INSIGNALBINDING_T); }
  "'#OutSignalBinding'" { return makeSymbol(#Symb.OUTSIGNALBINDING_T); }
Sophie Coudert's avatar
Sophie Coudert committed

  "'start'"               { return makeSymbol(#Symb.START_U); }
  "'done'"                { return makeSymbol(#Symb.DONE_U); }
  "start"                 { return makeSymbol(#Symb.START_U); }
  "done"                  { return makeSymbol(#Symb.DONE_U); }
  "'@amount'"             { return makeSymbol(#Symb.AMOUNT_U); }
  "'#NOKrequest'"         { return makeSymbol(#Symb.NOKREQUEST_T); }
  "'#TrivialRequest'"     { return makeSymbol(#Symb.TRIVIALREQUEST_T); }
  "'#immediate_request'"  { return makeSymbol(#Symb.IMMEDIATEREQUEST_U); }
  "'#SendRequest'"        { return makeSymbol(#Symb.SENDREQUEST_T); }
  "'#ReceiveRequest'"     { return makeSymbol(#Symb.RECEIVEREQUEST_T); }
  "'@msg'"                { return makeSymbol(#Symb.MSG_U); }
Sophie Coudert's avatar
Sophie Coudert committed

  "'#AvatarDataType'"  { return makeSymbol(#Symb.AVDATATYPE_T); }
  "'#AvatarBlock'"  { return makeSymbol(#Symb.AVBLOCK_T); }
  "'#AvatarVoidMethod'"  { return makeSymbol(#Symb.AVVOIDMETHOD_T); }
  "'#AvatarCalcMethod'"  { return makeSymbol(#Symb.AVCALCMETHOD_T); }
  "'#AvatarStandardState'"  { return makeSymbol(#Symb.AVSTANDARDSTATE_T); }
  "'#AvatarStopState'"  { return makeSymbol(#Symb.AVSTOPSTATE_T); }
  "'#AvatarStartState'"  { return makeSymbol(#Symb.AVSTARTSTATE_T); }
  "'#AvatarSendState'"  { return makeSymbol(#Symb.AVSENDSTATE_T); }
  "'#AvatarReceiveState'"  { return makeSymbol(#Symb.AVRECEIVESTATE_T); }
  "'#AvatarRandomState'"  { return makeSymbol(#Symb.AVRANDOMSTATE_T); }
  "'#AvatarCountState'"  { return makeSymbol(#Symb.AVCOUNTSTATE_T); }
  "'#AvatarPreSendState'"  { return makeSymbol(#Symb.AVPRESENDSTATE_T); }
  "'#AvatarPreReceiveState'"  { return makeSymbol(#Symb.AVPRERECEIVESTATE_T); }
  "'#AvatarTransition'"  { return makeSymbol(#Symb.AVTRANSITION_T); }
  "'#AvatarStateMachine'"  { return makeSymbol(#Symb.AVSTATEMACHINE_T); }
  "'#ReceiveAction'"  { return makeSymbol(#Symb.RECEIVEACTION_T); }
  "'#TransitionAction'"  { return makeSymbol(#Symb.TRANSITIONACTION_T); }
Sophie Coudert's avatar
Sophie Coudert committed

  "'#AvatarSetTimerState'"  { return makeSymbol(#Symb.AVSETTIMERSTATE_T); }
  "'#AvatarResetTimerState'"  { return makeSymbol(#Symb.AVRESETTIMERSTATE_T); }
  "'#AvatarExpireTimerState'"  { return makeSymbol(#Symb.AVEXPIRETIMERSTATE_T); }
  "'#AvatarSetTimerRequest'"  { return makeSymbol(#Symb.SETTIMERREQUEST_T); }
  "'#AvatarResetTimerRequest'"  { return makeSymbol(#Symb.RESETTIMERREQUEST_T); }
  "'#AvatarExpireTimerRequest'"  { return makeSymbol(#Symb.EXPIRETIMERREQUEST_T); }
  "'#TimerSetMsg'"  { return makeSymbol(#Symb.TIMERSETMSG_T); }
  "'#TimerResetMsg'"  { return makeSymbol(#Symb.TIMERRESETMSG_T); }
  "'#TimerExpireMsg'"  { return makeSymbol(#Symb.TIMEREXPIREMSG_T); }
  "'#AvatarTimer'"  { return makeSymbol(#Symb.AVTIMER_T); }
Sophie Coudert's avatar
Sophie Coudert committed

  "'#Assignment'"  { return makeSymbol(#Symb.ASSIGNMENT_T); }
  "'#bound_random'"  { return makeSymbol(#Symb.BOUNDRANDOM_U); }
  "Integer"          { return makeSymbol(#Symb.INTEGER_T); }
  "Boolean"          { return makeSymbol(#Symb.BOOLEAN_T); }
  "String"           { return makeSymbol(#Symb.STRING_T); }
  "Real"             { return makeSymbol(#Symb.REAL_T); }
Sophie Coudert's avatar
Sophie Coudert committed

  "about"            { return makeSymbol(#Symb.ABOUT); }
  "abstract"         { return makeSymbol(#Symb.ABSTRACT); }
  "accept"           { return makeSymbol(#Symb.ACCEPT); }
  "action"           { return makeSymbol(#Symb.ACTION); }
  "actor"            { return makeSymbol(#Symb.ACTOR); }
  "after"            { return makeSymbol(#Symb.AFTER); }
  "alias"            { return makeSymbol(#Symb.ALIAS); }
  "all"              { return makeSymbol(#Symb.ALL); }
  "allocate"         { return makeSymbol(#Symb.ALLOCATE); }
  "allocation"       { return makeSymbol(#Symb.ALLOCATION); }
  "analysis"         { return makeSymbol(#Symb.ANALYSIS); }
  "and"              { return makeSymbol(#Symb.AND); }
  "as"               { return makeSymbol(#Symb.AS); }
  "assert"           { return makeSymbol(#Symb.ASSERT); }
  "assign"           { return makeSymbol(#Symb.ASSIGN); }
  "assoc"            { return makeSymbol(#Symb.ASSOC); }
  "assume"           { return makeSymbol(#Symb.ASSUME); }
  "at"               { return makeSymbol(#Symb.AT); }
  "attribute"        { return makeSymbol(#Symb.ATTRIBUTE); }
  "bind"             { return makeSymbol(#Symb.BIND); }
  "binding"          { return makeSymbol(#Symb.BINDING); }
  "block"            { return makeSymbol(#Symb.BLOCK); }
  "by"               { return makeSymbol(#Symb.BY); }
  "calc"             { return makeSymbol(#Symb.CALC); }
  "case"             { return makeSymbol(#Symb.CASE); }
  "comment"          { return makeSymbol(#Symb.COMMENT); }
  "concern"          { return makeSymbol(#Symb.CONCERN); }
  "connect"          { return makeSymbol(#Symb.CONNECT); }
  "connection"       { return makeSymbol(#Symb.CONNECTION); }
  "constraint"       { return makeSymbol(#Symb.CONSTRAINT); }
  "decide"           { return makeSymbol(#Symb.DECIDE); }
  "def"              { return makeSymbol(#Symb.DEF); }
  "default"          { return makeSymbol(#Symb.DEFAULT); }
  "defined"          { return makeSymbol(#Symb.DEFINED); }
  "dependency"       { return makeSymbol(#Symb.DEPENDENCY); }
  "derived"          { return makeSymbol(#Symb.DERIVED); }
  "do"               { return makeSymbol(#Symb.DO); }
  "doc"              { return makeSymbol(#Symb.DOC); }
  "else"             { return makeSymbol(#Symb.ELSE); }
  "end"              { return makeSymbol(#Symb.END); }
  "entry"            { return makeSymbol(#Symb.ENTRY); }
  "enum"             { return makeSymbol(#Symb.ENUM); }
  "event"            { return makeSymbol(#Symb.EVENT); }
  "exhibit"          { return makeSymbol(#Symb.EXHIBIT); }
  "exit"             { return makeSymbol(#Symb.EXIT); }
  "expose"           { return makeSymbol(#Symb.EXPOSE); }
  "filter"           { return makeSymbol(#Symb.FILTER); }
  "first"            { return makeSymbol(#Symb.FIRST); }
  "flow"             { return makeSymbol(#Symb.FLOW); }
  "for"              { return makeSymbol(#Symb.FOR); }
  "fork"             { return makeSymbol(#Symb.FORK); }
  "frame"            { return makeSymbol(#Symb.FRAME); }
  "from"             { return makeSymbol(#Symb.FROM); }
  "hastype"          { return makeSymbol(#Symb.HASTYPE); }
  "if"               { return makeSymbol(#Symb.IF); }
  "implies"          { return makeSymbol(#Symb.IMPLIES); }
  "import"           { yybegin(IMPORTITEM); return makeSymbol(#Symb.IMPORT); }
  "in"               { return makeSymbol(#Symb.IN); }
  "include"          { return makeSymbol(#Symb.INCLUDE); }
  "individual"       { return makeSymbol(#Symb.INDIVIDUAL); }
  "inout"            { return makeSymbol(#Symb.INOUT); }
  "interface"        { return makeSymbol(#Symb.INTERFACE); }
  "istype"           { return makeSymbol(#Symb.ISTYPE); }
  "item"             { return makeSymbol(#Symb.ITEM); }
  "join"             { return makeSymbol(#Symb.JOIN); }
  "language"         { return makeSymbol(#Symb.LANGUAGE); }
  "loop"             { return makeSymbol(#Symb.LOOP); }
  "merge"            { return makeSymbol(#Symb.MERGE); }
  "message"          { return makeSymbol(#Symb.MESSAGE); }
  "metadata"         { return makeSymbol(#Symb.METADATA); }
  "nonunique"        { return makeSymbol(#Symb.NONUNIQUE); }
  "not"              { return makeSymbol(#Symb.NOT); }
  "objective"        { return makeSymbol(#Symb.OBJECTIVE); }
  "occurrence"       { return makeSymbol(#Symb.OCCURRENCE); }
  "of"               { return makeSymbol(#Symb.OF); }
  "or"               { return makeSymbol(#Symb.OR); }
  "ordered"          { return makeSymbol(#Symb.ORDERED); }
  "out"              { return makeSymbol(#Symb.OUT); }
  "package"          { return makeSymbol(#Symb.PACKAGE); }
  "parallel"         { return makeSymbol(#Symb.PARALLEL); }
  "part"             { return makeSymbol(#Symb.PART); }
  "perform"          { return makeSymbol(#Symb.PERFORM); }
  "port"             { return makeSymbol(#Symb.PORT); }
  "private"          { return makeSymbol(#Symb.PRIVATE); }
  "protected"        { return makeSymbol(#Symb.PROTECTED); }
  "public"           { return makeSymbol(#Symb.PUBLIC); }
  "readonly"         { return makeSymbol(#Symb.READONLY); }
  "redefines"        { return makeSymbol(#Symb.REDEFINES); }
  "ref"              { return makeSymbol(#Symb.REF); }
  "references"       { return makeSymbol(#Symb.REFERENCES); }
  "render"           { return makeSymbol(#Symb.RENDER); }
  "rendering"        { return makeSymbol(#Symb.RENDERING); }
  "rep"              { return makeSymbol(#Symb.REP); }
  "require"          { return makeSymbol(#Symb.REQUIRE); }
  "requirement"      { return makeSymbol(#Symb.REQUIREMENT); }
  "return"           { return makeSymbol(#Symb.RETURN); }
  "satisfy"          { return makeSymbol(#Symb.SATISFY); }
Sophie Coudert's avatar
Sophie Coudert committed
  "self"             { return makeSymbol(#Symb.SELF); }
  "send"             { return makeSymbol(#Symb.SEND); }
  "snapshot"         { return makeSymbol(#Symb.SNAPSHOT); }
  "specializes"      { return makeSymbol(#Symb.SPECIALIZES); }
  ":>"               { return makeSymbol(#Symb.REFINES); }
  "stakeholder"      { return makeSymbol(#Symb.STAKEHOLDER); }
  "state"            { return makeSymbol(#Symb.STATE); }
  "subject"          { return makeSymbol(#Symb.SUBJECT); }
  "subsets"          { return makeSymbol(#Symb.SUBSETS); }
  "succession"       { return makeSymbol(#Symb.SUCCESSION); }
  "then"             { return makeSymbol(#Symb.THEN); }
  "timeslice"        { return makeSymbol(#Symb.TIMESLICE); }
  "to"               { return makeSymbol(#Symb.TO); }
  "transition"       { return makeSymbol(#Symb.TRANSITION); }
  "until"            { return makeSymbol(#Symb.UNTIL); }
  "use"              { return makeSymbol(#Symb.USE); }
  "variant"          { return makeSymbol(#Symb.VARIANT); }
  "variation"        { return makeSymbol(#Symb.VARIATION); }
  "verification"     { return makeSymbol(#Symb.VERIFICATION); }
  "verify"           { return makeSymbol(#Symb.VERIFY); }
  "via"              { return makeSymbol(#Symb.VIA); }
  "view"             { return makeSymbol(#Symb.VIEW); }
  "viewpoint"        { return makeSymbol(#Symb.VIEWPOINT); }
  "when"             { return makeSymbol(#Symb.WHEN); }
  "while"            { return makeSymbol(#Symb.WHILE); }
  "xor"              { return makeSymbol(#Symb.XOR); }
  "null"             { return makeSymbol(#Symb.NULL); }
  {dataTypeName}              { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.DATATYPENAME,yytext())); }
  {blockName}                 { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.BLOCKNAME,yytext())); }
  {attributeName}             { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.ATTRIBUTENAME,yytext())); }
  {relationName}              { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RELATIONNAME,yytext())); }
  {channelPreName}            { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELPRENAME,yytext())); }
  {signalName}                { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SIGNALNAME,yytext())); }
  {channelName}               { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELNAME,yytext())); }
  {messageName}               { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.MESSAGENAME,yytext())); }
  {startStateName}            { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.CHANNELPRENAME,yytext())); }
  {stopStateName}             { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.STARTSTATENAME,yytext())); }
Sophie Coudert's avatar
Sophie Coudert committed
  {choiceStateName}           { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.STANDARDSTATENAME,yytext())); }
  {standardStateName}         { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.STANDARDSTATENAME,yytext())); }
  {randomStateName}           { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RANDOMSTATENAME,yytext())); }
  {countStateName}            { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.COUNTSTATENAME,yytext())); }
  {sendStateName}             { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SENDSTATENAME,yytext())); }
  {receiveStateName}          { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RECEIVESTATENAME,yytext())); }
  {presendStateName}          { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRESENDSTATENAME,yytext())); }
  {prereceiveStateName}       { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRERECEIVESTATENAME,yytext())); }
  {setTimerStateName}         { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.SETTIMERSTATENAME,yytext())); }
  {resetTimerStateName}       { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.RESETTIMERSTATENAME,yytext())); }
  {expireTimerStateName}      { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.EXPIRETIMERSTATENAME,yytext())); }
  {presetTimerStateName}      { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRESETTIMERSTATENAME,yytext())); }
  {preresetTimerStateName}    { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PRERESETTIMERSTATENAME,yytext())); }
  {preexpireTimerStateName}   { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.PREEXPIRETIMERSTATENAME,yytext())); }
  {timerBlockName}            { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.TIMERBLOCKNAME,yytext())); }
  {fieldName}                 { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.QUOTEDNAME,yytext())); }
  {AvIdent}                   { return makeSymbol(#Symb.IDENT, new Ident(AvatarFromSysMLSyntax.AVATARNAME,yytext())); }
  "'"[^']+"'"                  { String s = yytext();
                                return makeSymbol(#Symb.ANYNAME, s.substring(1, s.length() - 1)); }
 . { setErrorLocation(new Location(yyline, yycolumn));
     throw new Exception ("unexpected character in  expression"); }
Sophie Coudert's avatar
Sophie Coudert committed
}