diff --git a/gui/Scyther/XMLReader.py b/gui/Scyther/XMLReader.py index c4d7661..1c6704a 100644 --- a/gui/Scyther/XMLReader.py +++ b/gui/Scyther/XMLReader.py @@ -163,7 +163,7 @@ class XMLReader(object): followlist.append(follow) (etype,index) = (xml.get('type'),int(xml.get('index'))) - if etype in ('send','read'): + if etype in ('send','read','recv'): fr = self.readTerm(xml.find('from')) to = self.readTerm(xml.find('to')) message = self.readTerm(xml.find('message')) diff --git a/src/parser.y b/src/parser.y index 3d447dd..4be7a29 100644 --- a/src/parser.y +++ b/src/parser.y @@ -40,6 +40,7 @@ int yylex(void); %token PROTOCOL %token ROLE %token READT +%token RECVT %token SENDT %token CLAIMT %token VAR @@ -169,6 +170,10 @@ roledef : /* empty */ { $$ = tacCat($1,$2); } ; +/* + * For now, recv and read are synonyms, but have their own branch below. That's ugly duplication. Ultimately we want to deprecate read, + * but that will take a while I guess. + */ event : READT label '(' termlist ')' ';' { Tac t = tacCreate(TAC_READ); t->t1.sym = $2; @@ -176,6 +181,13 @@ event : READT label '(' termlist ')' ';' t->t2.tac = $4; $$ = t; } + | RECVT label '(' termlist ')' ';' + { Tac t = tacCreate(TAC_READ); + t->t1.sym = $2; + /* TODO test here: tac2 should have at least 3 elements */ + t->t2.tac = $4; + $$ = t; + } | SENDT label '(' termlist ')' ';' { Tac t = tacCreate(TAC_SEND); t->t1.sym = $2; diff --git a/src/scanner.l b/src/scanner.l index 97ab94b..77b6c2c 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -158,6 +158,7 @@ include BEGIN(incl); protocol { return PROTOCOL; } role { return ROLE; } read { return READT; } +recv { return RECVT; } send { return SENDT; } var { return VAR; } const { return CONST; }