When modelling with the Palladio Component Model, you can use stochastic expression to specify
Stochastic Expressions can include
DoublePDF[(1.0;0.3)(1.5;0.2)(2.0;0.5)] |
|
IntPMF[(27;0.1)(28;0.2)(29;0.6)(30;0.1)] |
|
DoublePMF[(22.3;0.4)(24.8;0.6)] |
|
EnumPMF[("circle";0.2) ("rectangle";0.3)("triangle";0.5)] |
|
BoolPMF[(false;0.3)(true;0.7)] |
|
23 |
|
42.5 |
|
"Hello World!" |
|
number.VALUE |
|
graphic.TYPE |
|
file.BYTESIZE |
|
array.NUMBER_OF_ELEMENTS |
|
set.STRUCTURE |
|
2+4, 34.3-1, 88.2*1.2, 14/2, 60%12 number.VALUE * 15, file.BYTESIZE / 2 |
|
DoublePDF[(1.0;0.3)(1.5;0.2)(2.0;0.5)] * 15 IntPMF[(1124.0;0.3)(1125.5;0.7)] + 2.5 DoublePDF[(12.0;0.9)(15;0.1)] - DoublePDF[(128.0;0.3)(256;0.2)(512.0;0.5)] |
|
number.VALUE < 20, foo.NUMBER_OF_ELEMENT == 12, blah.VALUE >= 108.3 AND fasel.TYPE == "mytype" |
|
number.VALUE >= 0 ? 10 : 1000 |
|
expression : ifElseExpr;
ifElseExpr : boolAndExpr ( QMARK boolAndExpr COLON boolAndExpr)?;
boolAndExpr : boolOrExpr ( AND boolOrExpr)*;
boolOrExpr : compareExpr ( (OR | XOR) compareExpr)*;
compareExpr : sumExpr( ( GREATER | LESS | EQUAL | NOTEQUAL | GREATEREQUAL | LESSEQUAL) sumExpr | );
sumExpr : prodExpr ( ( PLUS | MINUS ) prodExpr )*;
prodExpr : powExpr ( ( MUL | DIV | MOD ) powExpr )*;
powExpr : atom( POW atom|);
atom: ( NUMBER | scoped_id | definition | STRING_LITERAL | boolean_keywords | LPAREN compareExpr RPAREN);
scoped_id : ID ( DOT ( ID | "INNER") )*;
definition : "IntPMF" SQUARE_PAREN_L ( numeric_int_sample )+ SQUARE_PAREN_R
| "DoublePMF" SQUARE_PAREN_L ( numeric_real_sample )+ SQUARE_PAREN_R
| "EnumPMF" SQUARE_PAREN_L ( stringsample )+ SQUARE_PAREN_R
| "DoublePDF" SQUARE_PAREN_L( real_pdf_sample )+ SQUARE_PAREN_R
| "BoolPMF" SQUARE_PAREN_L ( boolsample )+ SQUARE_PAREN_R;
boolean_keywords: ( "false"| "true");
numeric_int_sample: LPAREN NUMBER SEMI NUMBER RPAREN;
numeric_real_sample: LPAREN NUMBER SEMI NUMBER RPAREN;
stringsample: LPAREN STRING_LITERAL SEMI NUMBER RPAREN;
real_pdf_sample: LPAREN NUMBER SEMI NUMBER RPAREN;
boolsample: LPAREN boolean_keywords SEMI NUMBER RPAREN
characterisation_keywords: ( "BYTESIZE" | "STRUCTURE" | "NUMBER_OF_ELEMENTS" | TYPE" | "VALUE");
mPLUS | mMINUS | mMUL | mDIV | mMOD | mPOW | mLPAREN | mRPAREN | mSEMI | mDEFINITION | mEQUAL | mSQUARE_PAREN_L | mSQUARE_PAREN_R | mNUMBER | mNOTEQUAL | mGREATER | mLESS | mGREATEREQUAL | mLESSEQUAL | mSTRING_LITERAL | mDOT | mID | mWS
mPLUS : ’+’;