Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +39 −11 Original line number Diff line number Diff line Loading @@ -294,10 +294,14 @@ GuardOp: killed=KilledStatement; DoneStatement: component=ComponentOrAny DOT DONEKEYWORD index=IndexAssignment?; component=ComponentOrAny DOT DONEKEYWORD (PORTREDIRECTSYMBOL value=ValueStoreSpec? index=IndexSpec? )?; ValueStoreSpec: VALUEKEYWORD ref=VariableRef ; KilledStatement: component=ComponentOrAny DOT KILLEDKEYWORD index=IndexAssignment?; component=ComponentOrAny DOT KILLEDKEYWORD (PORTREDIRECTSYMBOL value=ValueStoreSpec? index=IndexSpec? )?; ComponentOrAny: compOrDefault=ComponentOrDefaultReference | {ComponentOrAny} (any=ANYKEYWORD (COMPONENTKEYWORD | FROMKEYWORD Loading @@ -307,7 +311,7 @@ IndexAssignment: PORTREDIRECTSYMBOL index=IndexSpec; IndexSpec: INDEX_MODIFIER VALUEKEYWORD ref=VariableRef; INDEX_MODIFIER value=ValueStoreSpec; GetReplyStatement: PortOrAny DOT reply=PortGetReplyOp; Loading Loading @@ -376,7 +380,7 @@ AssignmentList: // TODO: should id reference something? VariableAssignment: ref=VariableRef ASSIGNMENTCHAR name=IDENTIFIER; ref=VariableRef ASSIGNMENTCHAR (decoded=DECODED_MODIFIER ( LPAREN expr=Expression RPAREN )? )? name=IDENTIFIER; VariableList: entries+=VariableEntry (COMMA entries+=VariableEntry)*; Loading Loading @@ -418,7 +422,7 @@ ValueSpec: VALUEKEYWORD (variable=VariableRef | (LPAREN specs+=SingleValueSpec (COMMA specs+=SingleValueSpec)* RPAREN)); SingleValueSpec: variable=VariableRef (ASSIGNMENTCHAR field=[FieldReference|IDENTIFIER] ext+=ExtendedFieldReference*)?; variable=VariableRef (ASSIGNMENTCHAR (decoded=DECODED_MODIFIER ( LPAREN expr=Expression RPAREN )? )? fieldRef=[FieldReference|IDENTIFIER] ext+=ExtendedFieldReference*)?; AltGuardChar: {AltGuardChar} SQUAREOPEN expr=BooleanExpression? SQUARECLOSE; Loading Loading @@ -872,7 +876,7 @@ Bound: ((EXCLAMATIONMARK)? expr=SingleExpression) | {Bound} (MINUS? INFINITYKEYWORD); StringLength: LENGTHKEYWORD LPAREN expr=SingleExpression (RANGEOP bound=Bound)? RPAREN; LENGTHKEYWORD LPAREN expr=SingleExpression (RANGEOP ( upper=SingleExpression | INFINITYKEYWORD) )? RPAREN; CharStringMatch: PATTERNKEYWORD NOCASE_MODIFIER? pattern+=PatternParticle (STRINGOP pattern+=PatternParticle)*; Loading Loading @@ -943,9 +947,13 @@ TemplateActualParList: MatchingSymbol: complement=Complement | {MatchingSymbol} any=QUESTIONMARK qwlm=WildcardLengthMatch? | {MatchingSymbol} anyornone=STAR swlm=WildcardLengthMatch? | range=Range | {MatchingSymbol} BIT_STRING_OR_MATCH | {MatchingSymbol} HEX_STRING_OR_MATCH | {MatchingSymbol} OCTET_STRING_OR_MATCH | string=CharStringMatch | subset=SubsetMatch | superset=SupersetMatch | | {MatchingSymbol} OCTET_STRING_OR_MATCH | string=CharStringMatch | subset=SubsetMatch | superset=SupersetMatch | decoded=DecodedContentMatch | templates=ListOfTemplates; DecodedContentMatch: DECODED_MATCH ( LPAREN Expression RPAREN )? template=InLineTemplate ; SubsetMatch: SUBSETKEYWORD ListOfTemplates; Loading Loading @@ -1355,11 +1363,23 @@ UniversalCharString returns ecore::EString: UNIVERSALKEYWORD CHARSTRINGKEYWORD; CharStringValue returns ecore::EString: CSTRING | Quadruple; CSTRING | Quadruple | USIlikeNotation; Quadruple returns ecore::EString: terminal Quadruple returns ecore::EString: CHARKEYWORD LPAREN NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER RPAREN; //TODO: may be too restrictive as terminal, otherwise causes conflicts // otherwise it has a conflict with referenced named objects -> make plus mandatory? //TODO: this conflicts with the above!!! -> make both terminals? (disallows spaces) terminal USIlikeNotation returns ecore::EString: CHARKEYWORD LPAREN UIDLIKE ( COMMA UIDLIKE )* RPAREN ; //TODO: plus should be optional according to spec.. -> also prevents u+2 vs u + 2 expressions terminal UIDLIKE returns ecore::EString: ( 'U' | 'u' ) PLUS? (HEX)* ; FloatValue returns ecore::EString: FLOATDOTNOTATION | FLOATENOTATION | NANKEYWORD; Loading Loading @@ -1534,9 +1554,15 @@ terminal LAZY_MODIFIER returns ecore::EString: terminal FUZZY_MODIFIER returns ecore::EString: '@fuzzy'; terminal DECODED_MODIFIER returns ecore::EString: '@decoded'; terminal NOCASE_MODIFIER returns ecore::EString: '@nocase'; terminal DECODED_MATCH returns ecore::EString: 'decmatch'; terminal SELFOP returns ecore::EString: 'self'; Loading Loading @@ -2063,11 +2089,13 @@ enum VerdictTypeValue: * Changed TemplateInstance to TemplateOrRange */ PreDefFunction: Fint2char | Fint2unichar | Fint2bit | Fint2enum | Fint2hex | Fint2oct | Fint2str | Fint2float | Ffloat2int | (Fint2char | Fint2unichar | Fint2bit | Fint2enum | Fint2hex | Fint2oct | Fint2str | Fint2float | Ffloat2int | Fchar2int | Fchar2oct | Funichar2int | Funichar2oct | Fbit2int | Fbit2hex | Fbit2oct | Fbit2str | Fhex2int | Fhex2bit | Fhex2oct | Fhex2str | Foct2int | Foct2bit | Foct2hex | Foct2str | Foct2char | Foct2unichar | Fstr2int | Fstr2hex | Fstr2oct | Fstr2float | Fenum2int | Flengthof | Fsizeof | Fispresent | Fischosen | Fisvalue | Fisbound | Fregexp | Fsubstr | Freplace | Fencvalue | Fdecvalue | FencvalueUnichar | FdecvalueUnichar | Frnd | Ftestcasename; Fsubstr | Freplace | Fencvalue | Fdecvalue | FencvalueUnichar | FdecvalueUnichar | Frnd | Ftestcasename) nocase=NOCASE_MODIFIER? ; Fint2char: f='int2char' LPAREN e1=SingleExpression RPAREN; Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/TTCN3.xtext +39 −11 Original line number Diff line number Diff line Loading @@ -294,10 +294,14 @@ GuardOp: killed=KilledStatement; DoneStatement: component=ComponentOrAny DOT DONEKEYWORD index=IndexAssignment?; component=ComponentOrAny DOT DONEKEYWORD (PORTREDIRECTSYMBOL value=ValueStoreSpec? index=IndexSpec? )?; ValueStoreSpec: VALUEKEYWORD ref=VariableRef ; KilledStatement: component=ComponentOrAny DOT KILLEDKEYWORD index=IndexAssignment?; component=ComponentOrAny DOT KILLEDKEYWORD (PORTREDIRECTSYMBOL value=ValueStoreSpec? index=IndexSpec? )?; ComponentOrAny: compOrDefault=ComponentOrDefaultReference | {ComponentOrAny} (any=ANYKEYWORD (COMPONENTKEYWORD | FROMKEYWORD Loading @@ -307,7 +311,7 @@ IndexAssignment: PORTREDIRECTSYMBOL index=IndexSpec; IndexSpec: INDEX_MODIFIER VALUEKEYWORD ref=VariableRef; INDEX_MODIFIER value=ValueStoreSpec; GetReplyStatement: PortOrAny DOT reply=PortGetReplyOp; Loading Loading @@ -376,7 +380,7 @@ AssignmentList: // TODO: should id reference something? VariableAssignment: ref=VariableRef ASSIGNMENTCHAR name=IDENTIFIER; ref=VariableRef ASSIGNMENTCHAR (decoded=DECODED_MODIFIER ( LPAREN expr=Expression RPAREN )? )? name=IDENTIFIER; VariableList: entries+=VariableEntry (COMMA entries+=VariableEntry)*; Loading Loading @@ -418,7 +422,7 @@ ValueSpec: VALUEKEYWORD (variable=VariableRef | (LPAREN specs+=SingleValueSpec (COMMA specs+=SingleValueSpec)* RPAREN)); SingleValueSpec: variable=VariableRef (ASSIGNMENTCHAR field=[FieldReference|IDENTIFIER] ext+=ExtendedFieldReference*)?; variable=VariableRef (ASSIGNMENTCHAR (decoded=DECODED_MODIFIER ( LPAREN expr=Expression RPAREN )? )? fieldRef=[FieldReference|IDENTIFIER] ext+=ExtendedFieldReference*)?; AltGuardChar: {AltGuardChar} SQUAREOPEN expr=BooleanExpression? SQUARECLOSE; Loading Loading @@ -872,7 +876,7 @@ Bound: ((EXCLAMATIONMARK)? expr=SingleExpression) | {Bound} (MINUS? INFINITYKEYWORD); StringLength: LENGTHKEYWORD LPAREN expr=SingleExpression (RANGEOP bound=Bound)? RPAREN; LENGTHKEYWORD LPAREN expr=SingleExpression (RANGEOP ( upper=SingleExpression | INFINITYKEYWORD) )? RPAREN; CharStringMatch: PATTERNKEYWORD NOCASE_MODIFIER? pattern+=PatternParticle (STRINGOP pattern+=PatternParticle)*; Loading Loading @@ -943,9 +947,13 @@ TemplateActualParList: MatchingSymbol: complement=Complement | {MatchingSymbol} any=QUESTIONMARK qwlm=WildcardLengthMatch? | {MatchingSymbol} anyornone=STAR swlm=WildcardLengthMatch? | range=Range | {MatchingSymbol} BIT_STRING_OR_MATCH | {MatchingSymbol} HEX_STRING_OR_MATCH | {MatchingSymbol} OCTET_STRING_OR_MATCH | string=CharStringMatch | subset=SubsetMatch | superset=SupersetMatch | | {MatchingSymbol} OCTET_STRING_OR_MATCH | string=CharStringMatch | subset=SubsetMatch | superset=SupersetMatch | decoded=DecodedContentMatch | templates=ListOfTemplates; DecodedContentMatch: DECODED_MATCH ( LPAREN Expression RPAREN )? template=InLineTemplate ; SubsetMatch: SUBSETKEYWORD ListOfTemplates; Loading Loading @@ -1355,11 +1363,23 @@ UniversalCharString returns ecore::EString: UNIVERSALKEYWORD CHARSTRINGKEYWORD; CharStringValue returns ecore::EString: CSTRING | Quadruple; CSTRING | Quadruple | USIlikeNotation; Quadruple returns ecore::EString: terminal Quadruple returns ecore::EString: CHARKEYWORD LPAREN NUMBER COMMA NUMBER COMMA NUMBER COMMA NUMBER RPAREN; //TODO: may be too restrictive as terminal, otherwise causes conflicts // otherwise it has a conflict with referenced named objects -> make plus mandatory? //TODO: this conflicts with the above!!! -> make both terminals? (disallows spaces) terminal USIlikeNotation returns ecore::EString: CHARKEYWORD LPAREN UIDLIKE ( COMMA UIDLIKE )* RPAREN ; //TODO: plus should be optional according to spec.. -> also prevents u+2 vs u + 2 expressions terminal UIDLIKE returns ecore::EString: ( 'U' | 'u' ) PLUS? (HEX)* ; FloatValue returns ecore::EString: FLOATDOTNOTATION | FLOATENOTATION | NANKEYWORD; Loading Loading @@ -1534,9 +1554,15 @@ terminal LAZY_MODIFIER returns ecore::EString: terminal FUZZY_MODIFIER returns ecore::EString: '@fuzzy'; terminal DECODED_MODIFIER returns ecore::EString: '@decoded'; terminal NOCASE_MODIFIER returns ecore::EString: '@nocase'; terminal DECODED_MATCH returns ecore::EString: 'decmatch'; terminal SELFOP returns ecore::EString: 'self'; Loading Loading @@ -2063,11 +2089,13 @@ enum VerdictTypeValue: * Changed TemplateInstance to TemplateOrRange */ PreDefFunction: Fint2char | Fint2unichar | Fint2bit | Fint2enum | Fint2hex | Fint2oct | Fint2str | Fint2float | Ffloat2int | (Fint2char | Fint2unichar | Fint2bit | Fint2enum | Fint2hex | Fint2oct | Fint2str | Fint2float | Ffloat2int | Fchar2int | Fchar2oct | Funichar2int | Funichar2oct | Fbit2int | Fbit2hex | Fbit2oct | Fbit2str | Fhex2int | Fhex2bit | Fhex2oct | Fhex2str | Foct2int | Foct2bit | Foct2hex | Foct2str | Foct2char | Foct2unichar | Fstr2int | Fstr2hex | Fstr2oct | Fstr2float | Fenum2int | Flengthof | Fsizeof | Fispresent | Fischosen | Fisvalue | Fisbound | Fregexp | Fsubstr | Freplace | Fencvalue | Fdecvalue | FencvalueUnichar | FdecvalueUnichar | Frnd | Ftestcasename; Fsubstr | Freplace | Fencvalue | Fdecvalue | FencvalueUnichar | FdecvalueUnichar | Frnd | Ftestcasename) nocase=NOCASE_MODIFIER? ; Fint2char: f='int2char' LPAREN e1=SingleExpression RPAREN; Loading