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 )*