BNF for pedl.jj
NON-TERMINALS
addObj
::=
java code
location
::=
java code
checkMethodObj
::=
java code
contained
::=
java code
addExec
::=
java code
setRelOp
::=
java code
setArithOp
::=
java code
addToSymbolTable
::=
java code
searchSymbolTable
::=
java code
connectAndSetName
::=
java code
error_skipto
::=
java code
MonitoringScript
::=
<MONSCR> <IDENTIFIER>
Declarations
Definitions
<END>
Declarations
::=
( ( (
EventDeclaration
|
ConditionDeclaration
|
MonitoredObjectDeclaration
|
MonitoredMethodDeclaration
) ) ( ";" )? )*
Definitions
::=
( ( (
EventDefinition
|
ConditionDefinition
) ) ( ";" )? )*
EventDeclaration
::=
<EXPORT> <EVENT>
EventNames
ConditionDeclaration
::=
<EXPORT> <CONDITION>
ConditionNames
EventNames
::=
<IDENTIFIER> ( "," <IDENTIFIER> )*
ConditionNames
::=
<IDENTIFIER> ( "," <IDENTIFIER> )*
MonitoredObjectDeclaration
::=
<MONOBJ>
Type
(
AliasVariableName
"<-" )?
ObjectName
( "," ( <IDENTIFIER> "<-" )?
ObjectName
)*
MonitoredMethodDeclaration
::=
<MONMETH> (
Type
| <VOID> ) (
AliasMethodName
"<-" )?
MethodName
ObjectName
::=
( <IDENTIFIER> "." )* <IDENTIFIER> ( "." <IDENTIFIER>
FormalParameters
)? "." <IDENTIFIER>
MethodNameWOparameters
::=
( <IDENTIFIER> "." )+ <IDENTIFIER>
MethodName
::=
MethodNameWOparameters
FormalParameters
AliasVariableName
::=
<IDENTIFIER>
AliasMethodName
::=
<IDENTIFIER>
FormalParameters
::=
"(" (
Type
( ","
Type
)* )? ")"
EventDefinition
::=
<EVENT> <IDENTIFIER> "="
EventExpression
EventExpression
::=
(
SimpleEventExpression
( (
EventOp
EventExpression
) )?
OptionalWhen
)
OptionalWhen
::=
( <WHEN>
ConditionalExpression
)*
SimpleEventExpression
::=
( <IDENTIFIER> | "("
EventExpression
")" | <START> "("
ConditionalExpression
")" | <END> "("
ConditionalExpression
")" | <UPDATE> "("
ObjectName
")" | <STARTM> "("
MethodNameWOparameters
FormalParameters
")" | <ENDM> "("
MethodNameWOparameters
FormalParameters
")" | <IOM> "("
MethodNameWOparameters
FormalParameters
")" )
EventOp
::=
"&&"
|
"||"
ConditionDefinition
::=
<CONDITION> <IDENTIFIER> "="
ConditionalExpression
Type
::=
( (
PrimitiveType
|
Name
) ( "[" "]" )* )
PrimitiveType
::=
( "boolean" )
|
( "char" )
|
( "byte" )
|
( "short" )
|
( "int" )
|
( "long" )
|
( "float" )
|
( "double" )
Name
::=
<IDENTIFIER> ( "." ( <IDENTIFIER> ) )*
NameList
::=
Name
( ","
Name
)*
Expression
::=
ConditionalExpression
ConditionalExpression
::=
ConditionalOrExpression
ConditionalOrExpression
::=
(
ConditionalAndExpression
( "||"
ConditionalAndExpression
)* )
ConditionalAndExpression
::=
(
InclusiveOrExpression
( "&&"
InclusiveOrExpression
)* )
InclusiveOrExpression
::=
(
ExclusiveOrExpression
( "|"
ExclusiveOrExpression
)* )
ExclusiveOrExpression
::=
(
AndExpression
( "^"
AndExpression
)* )
AndExpression
::=
(
EqualityExpression
( "&"
EqualityExpression
)* )
EqualityExpression
::=
( <INM> "("
MethodNameWOparameters
FormalParameters
")" )
|
( <DEFINED> "("
ConditionalExpression
")" )
|
InstanceOfExpression
( ( ( "==" | "!=" )
InstanceOfExpression
) )*
InstanceOfExpression
::=
(
RelationalExpression
( "instanceof"
Type
)? )
RelationalExpression
::=
ShiftExpression
( ( ( "<" | ">" | "<=" | ">=" )
ShiftExpression
) )*
ShiftExpression
::=
AdditiveExpression
( ( ( "<<" | ">>" | ">>>" )
AdditiveExpression
) )*
AdditiveExpression
::=
MultiplicativeExpression
( ( ( "+" | "-" )
MultiplicativeExpression
) )*
MultiplicativeExpression
::=
UnaryExpression
( ( ( "*" | "/" | "%" )
UnaryExpression
) )*
UnaryExpression
::=
( ( "+" | "-" )
UnaryExpression
)
|
UnaryExpressionNotPlusMinus
|
( <TIME> "("
EventExpression
")" )
|
( <VALUE> "("
EventExpression
","
Expression
")" )
UnaryExpressionNotPlusMinus
::=
( ( "~" | "!" )
UnaryExpression
)
|
CastExpression
|
PrimaryExpression
CastLookahead
::=
"("
PrimitiveType
|
"("
Name
"[" "]"
|
"("
Name
")" ( "~" | "!" | "(" | <IDENTIFIER> |
Literal
)
CastExpression
::=
( "("
Type
")"
UnaryExpression
| "("
Type
")"
UnaryExpressionNotPlusMinus
)
PrimaryExpression
::=
PrimaryPrefix
( (
PrimarySuffix
) )*
PrimaryPrefix
::=
Literal
|
"("
Expression
")"
|
ObjectName
|
<IDENTIFIER>
PrimarySuffix
::=
( "["
Expression
"]" | "." <IDENTIFIER> |
Arguments
)
Literal
::=
( <INTEGER_LITERAL> )
|
( <FLOATING_POINT_LITERAL> )
|
( <CHARACTER_LITERAL> )
|
( <STRING_LITERAL> )
|
( "true" )
|
( "false" )
|
( "null" )
Arguments
::=
"(" (
ArgumentList
)? ")"
ArgumentList
::=
Expression
( ","
Expression
)*