Grammar of Dynamic View Type Specifications
In this appendix, you will find the grammar of dynamic view type specifications.
view-specification:view-header subscribe-listopt
view-header:view identifier view-typeopt paramsopt :
representationopt
view-type:is id
params:(param-listopt)
param-list:param
param , param-list
param:type-id id = expression
subscribe-list:subscribe-spec
subscribe-list subscribe_spec
subscribe_spec:subscribe originopt id conditionopt : action-listopt
condition:when expression
action-list:action-spec
action-list action-spec
action-spec:representation:
propagation
representation : represent identifier identifier
conditionopt : attr-listopt
propagation: propagate identifier conditionopt ;
attr-list:attr-spec
attr-list attr-spec
attr-spec: attr-type-id simple-path = expression
HyperRef simple-path = hyper-ref-expr
Collector simple-path = collector-expr ;
attr-type-id:type-id
mandatory optRef< identifier >
type-id:boolean
char
int
float
double
string
file
id
hyper-ref-expr:
{ path-spec -> identifier , expression }
{ identifier , expression }
collector-expr:path-spec -> identifier
path : simple-path
simple-path . path
simple-path: id
id [ integer-literal ]
representation-path:
path -> id
-> id
expression:( expression )
conditional-expression
logical-expression
relational-expression
arithmetic-expression
representation path
path
function-call-expression
literal
conditional-expression:expression ? expression : expression
logical-expression:expression && expression
expression || expression
! expression
expression in ( enumeration )
relational-expression:expression < expression
expression <= expression
expression == expression
expression >= expression
expression > expression
arithmetic-expression : expression + expression
expression - expression
expression * expression
expression / expression
function-call-expression : id ( expression-listopt )
id:[_a-zA-Z0-9]+
enumeration : literal-list
literal:boolean-literal
character-literal
integer-literal
float-literal
string-literal
boolean-literal:true
false
character-literal: ’[a-zA-Z0-9!@#$%^&*()_-+={}[]|\<>?,./‘:;”~]’
integer-literal: signopt[0-9][0-9]*
float-literal: signopt[0-9][0-9]*.[0-9]* exponentopt
sign: +
|-
exponent: [Ee] signopt[0-9][0-9]*
string-literal: “ character-literal* “