BNF for edl.jj

NON-TERMINALS

edlUnit ::= ( suiteDecl ( observablesSection | importDecl )+ <EOF> )
importDecl ::= "@import" <STRING_LITERAL>
importEdlUnit ::= ( observablesSection | importDecl )+ <EOF>
suiteDecl ::= "begin" "EDLSuite" ( <STRING_LITERAL> | <WILD_STRING> ) ( array_element_load_bounds__decl | array_element_store_bounds__decl )* "end"
array_element_load_bounds__decl ::= ( "array_element_load_bounds" ( "*" | argType ) ( ( "min:" <UINT> ( "max:" <UINT> )? ) | ( "max:" <UINT> ( "min:" <UINT> )? ) ) )
array_element_store_bounds__decl ::= ( "array_element_store_bounds" ( "*" | argType ) ( ( "min:" <UINT> ( "max:" <UINT> )? ) | ( "max:" <UINT> ( "min:" <UINT> )? ) ) )
observablesSection ::= "begin" "Observables" ( <STRING_LITERAL> | <WILD_STRING> ) preambleSection ( observableEvent )* "end"
preambleSection ::= "begin" "Preamble" preambleDeclarations "end"
preambleDeclarations ::= ( "System-classes:" ( <STRING_LITERAL> | <WILD_STRING> ) ) ( ( "Module-classes:" ( <STRING_LITERAL> | <WILD_STRING> ) ) | ( "No-module:" ( <TRUE> | <FALSE> ) ) )? ( "Database-tag:" ( <STRING_LITERAL> | <WILD_STRING> ) )? ( preambleTypedef )*
preambleTypedef ::= "Type-name:" javaIdentifier ( jniReferenceType | qualifiedName )
observableEvent ::= ( "+" | "-" ) eventDecl
eventDecl ::= ( new_object__decl | construct_object__decl | construct_finish__decl | get_static__decl | put_static__decl | get_field__decl | put_field__decl | constructor_call__decl | static_call__decl | virtual_call__decl | interface_call__decl | virtual_method_enter__decl | virtual_method_exit__decl | static_method_enter__decl | static_method_exit__decl | monitor_contend__decl | monitor_acquire__decl | monitor_pre_release__decl | monitor_release__decl | throw__decl | catch__decl | static_init_enter__decl | array_element_load__decl | array_element_store__decl )
new_object__decl ::= "new_object" ( "*" | ( qualifiedName ( ".*" )? ) ) locationBlock
construct_object__decl ::= "construct_object" ( "*" | ( qualifiedName argsExpr ) )
construct_finish__decl ::= "construct_finish" ( "*" | ( qualifiedName argsExpr ) )
get_static__decl ::= "get_static" qualifiedName ( ".*" )? locationBlock
put_static__decl ::= "put_static" qualifiedName ( ".*" )? locationBlock
get_field__decl ::= "get_field" qualifiedName ( ".*" )? locationBlock
put_field__decl ::= "put_field" qualifiedName ( ".*" )? locationBlock
constructor_call__decl ::= "constructor_call" ( "*" | ( qualifiedName argsExpr ) ) locationBlock
static_call__decl ::= "static_call" ( "#INT" )? ( "*" | ( qualifiedName ( ( ".*" ) | argsExpr ) ) ) locationBlock
virtual_call__decl ::= "virtual_call" ( "#INT" )? ( "*" | ( qualifiedName ( ( ".*" ) | argsExpr ) ) ) locationBlock
interface_call__decl ::= "interface_call" ( "#INT" )? ( "*" | ( qualifiedName ( ( ".*" ) | argsExpr ) ) ) locationBlock
virtual_method_enter__decl ::= "virtual_method_enter" ( "*" | ( qualifiedName ( ( ".*" ) | argsExpr ) ) )
virtual_method_exit__decl ::= "virtual_method_exit" ( "*" | ( qualifiedName ( ( ".*" ) | argsExpr ) ) )
static_method_enter__decl ::= "static_method_enter" ( "*" | ( qualifiedName ( ( ".*" ) | argsExpr ) ) )
static_method_exit__decl ::= "static_method_exit" ( "*" | ( qualifiedName ( ( ".*" ) | argsExpr ) ) )
monitor_contend__decl ::= "monitor_contend" ( "*" | ( qualifiedName ( ".*" )? ) ) locationBlock
monitor_acquire__decl ::= "monitor_acquire" ( "*" | ( qualifiedName ( ".*" )? ) ) locationBlock
monitor_pre_release__decl ::= "monitor_pre_release" ( "*" | ( qualifiedName ( ".*" )? ) ) locationBlock
monitor_release__decl ::= "monitor_release" ( "*" | ( qualifiedName ( ".*" )? ) ) locationBlock
throw__decl ::= "throw" ( "*" | ( qualifiedName ( "+s" )? ) ) locationBlock
catch__decl ::= "catch" ( "*" | ( qualifiedName ( "+s" )? ) ) locationBlock
static_init_enter__decl ::= "static_init_enter" ( "*" | ( qualifiedName ( ".*" )? ) )
array_element_load__decl ::= "array_element_load" ( "*" | argType ) ( "min:" <UINT> )? ( "max:" <UINT> )? locationBlock
array_element_store__decl ::= "array_element_store" ( "*" | argType ) ( "min:" <UINT> )? ( "max:" <UINT> )? locationBlock
locationBlock ::= "{" ( ( "in" | "not" ) ( "*" | ( qualifiedName ( ( ".*" ) | argsExpr ) ) ) )* "}"
argsExpr ::= ( "*" | voidArg | ( argType ( "," argType )* ) | jniMethodSignature )
voidArg ::= ( "void" | "V" )
argType ::= ( basicTypeName | jniPrimitiveType | ( jniObjectType | jniArrayType | qualifiedName ) )
basicTypeName ::= ( "byte" | "char" | "double" | "float" | "int" | "long" | "boolean" | "short" | "string" )
jniPrimitiveType ::= ( "B" | "C" | "D" | "F" | "I" | "J" | "Z" | "S" )
jniReferenceType ::= ( jniArrayType | jniObjectType )
jniArrayType ::= ( "[" )+ ( jniPrimitiveType | jniObjectType )
jniObjectType ::= javaIdentifier ( "/" javaIdentifier )* ";"
jniMethodSignature ::= "(" ( javaIdentifier | "[" | "/" | ";" )* ")" ( javaIdentifier | "V" | "[" | "/" | ";" )+
qualifiedName ::= ( javaIdentifier ( "." javaIdentifier )* )
javaIdentifier ::= ( "string" | "B" | "C" | "D" | "F" | "I" | "J" | "Z" | "S" | <JAVA_ID> )