EBNF NOTATION OF AO-OPENCOM POINTCUT LANGUAGE

aspect

::=

aspect_name , pointcut_specification , advice_specification;

pointcut_specification

::=

pointcut_name, {pointcut_expression};

advice_specification

::=

advice_name,{advice_expressions}, {advice_type} ;

advice_type

::=

pre | post | around;

pointcut_expressions

::=

{static_properties} | {dynamic_properties} |
{static_properties} [operators] {dynamic_properties};

advice_ expression 

::=

{static_properties}| {dynamic_properties} |
{static_properties} [operators] {dynamic_properties};

operators

::=

or | and | not | “||” | “&&” |  “!”;

static_properties

::=

{[capsule_sig]} [operators] {[component_sig]} [operators] {[interface_sig]} [operators]  {[receptacle_sig]}[operators] {[operation_sig]), [interface_category];

interface_category

::=

[“INTERFACE”] | [“RECEPTACLE”] | [“all”];

capsule_sig

::=

expression | identifier

component_sig

::=

instance | comp_type | expression;

interface_sig

::=

instance |  interface_type | expression;

receptacle_sig

::=

instance | receptacle_type | expression;

comp_type

::=

component;

component

::=

class_name  | logical_declaration;

interface_type

::=

interface, logical_declaration;

receptacle_type

::=

receptacle, logical_declaration;

logical_declaration

::=

global_unique_identifier  | instance;

interface

::=

entity,  interface_declaration;

receptacle

::=

entity, interface_declaration;

dynamic_properties

::=

(key, value) | key;

key

::=

identifier;

value

::=

comp_type | interface_type | receptacle_type;

instance

::=

 “[“, “]” |  int | identifier ;

expression

::=

expression, (“&&” | “+” | “*” | “.” | “!”)  [identifier] | “all”;

identifier

::=

{[0-9]}, {[a-z]}, {[A-Z]};

operation_sig

::=

{modifier} | type identifier “(“[parameter_list ]”)” {“[“ “]”} “;”

global_unique_identifier

::=

128-byte Id;

type

::=

type_specifier  { "[" "]" }

type_specifier

::=

“boolean” | “byte” | “char”| “short” |“int”| “float” | “long”|“double”| identifier

modifier

::=

“public” | “private” | "protected" | "static" | "final" | "native" | "synchronised"   | "abstract"