Table 3.1. Root Software Elements EBNF
| Production | Syntax | Links |
|---|---|---|
root_software_element (RSE) | ||
/* types */ | ||
type |
| the section called “Type” |
inherited_type_list | ||
simple_inherited_type_list | "inherit" type_selector ( ";" type_selector ) * "end" | Chapter 15, Type inheritance |
redefined_inherited_type |
| Chapter 18, Feature redefinition |
| . | ||
enumerated_type |
| Chapter 11, Enumerated type |
| . | ||
generic_type |
Remarks:
| Chapter 19, Generic types |
generified_type |
| Chapter 19, Generic types |
/* factory */ | ||
factory |
| the section called “Factory” |
| . | ||
generic_factory |
Remark: property 'id' must not be specified for 'factory' | Chapter 19, Generic types |
generified_factory |
| Chapter 19, Generic types |
/* service */ | ||
service |
| the section called “Service” |
/* common RSE components */ | ||
RSE_java_code |
| |
generic_parameter |
| |
/* source code template */ | ||
source_code_template |
| Chapter 20, Source code templates |
template_parameter |
| |
variable_template_source_code |
| |
Table 3.2. Features EBNF
| Production | Syntax | Links |
|---|---|---|
/* attributes */ | ||
attribute_list | ( attribute | attributes_with_common_properties ) + | |
attribute |
| the section called “Attribute” |
attributes_with_common_properties |
| |
attribute_list_check |
| the section called “Property attribute_check” |
/* commands */ | ||
command_list | ( command | commands_with_common_properties ) + | |
command |
| the section called “Command” |
commands_with_common_properties |
| |
/* creators */ | ||
creator_list | ( creator | creators_with_common_properties ) + | |
creator |
| the section called “Creator” |
creators_with_common_properties |
| |
/* command/creator input/output */ | ||
input_argument |
| the section called “Input and output arguments” |
output_argument |
| the section called “Input and output arguments” |
in_check |
| |
out_check |
| |
/* events */ | ||
event_list | ( event | events_with_common_properties ) + | |
event |
| the section called “Event” |
events_with_common_properties |
| |
Table 3.3. Feature properties EBNF
| Production | Syntax | Links |
|---|---|---|
attribute_properties |
| Table 6.2, “Attribute properties” |
command_properties | Table 6.8, “Command properties” | |
event_properties | the section called “Event declaration instruction” | |
| . | ||
object_type_selector_property | "type" ":" object_type_selector | |
voidable_property | "voidable" ":" ( "yes" | "no" ) | |
check_property | "check" ":" condition error_info ? | |
default_property | "default" ":" expression | |
private_property | "private" ":" ( "yes" | "no" ) | |
attribute_kind_property | "kind" ":" ( "constant" | "variable" | "readonly_constant" | "readonly_variable" ) | the section called “Attribute property kind” |
setable_property | "setable" ":" ( "all" | "factory" | "service" | "creator" | "none" ) | the section called “Attribute property setable” |
obsolete_property | "obsolete" ":" ( "yes" | "no" ) | |
creator_kind_property | "kind" ":" ( "standard" | "in_all" ) | the section called “Creator” |
Table 3.4. Scripts EBNF
| Production | Syntax | Links |
|---|---|---|
check_script |
| the section called “Check scripts” |
default_script |
| the section called “Default scripts” |
get_script |
| the section called “Attribute get script” |
set_script |
| the section called “Attribute set script” |
| . | ||
script |
| Chapter 7, Scripts |
| . | ||
test_script |
| the section called “test script” |
Table 3.5. Script instructions EBNF
| Production | Syntax | Links |
|---|---|---|
script_instruction |
| Chapter 8, Script instructions |
/* assignments */ | ||
variable_declaration_instruction |
"var" object_type_selector variable_id ( ";" variable_id ) * ( "=" expression assignment_tail ? ) ?
| the section called “Variable declaration instruction” |
constant_declaration_instruction |
"const" object_type_selector constant_id "=" expression assignment_tail ?
| the section called “Constant declaration instruction” |
assignment_instruction |
assignable_object_reference_selector "=" expression assignment_tail ?
| the section called “Assignment instruction” |
assignment_tail |
type_check_clause ? on_error_clause ?
| the section called “Assignment tail” |
/* script execution */ | ||
object_command_execution_instruction |
object_reference_selector "." command_id input_assignment_list ? output_assignment_list ? script_execution_tail ?
| the section called “Object command execution instruction” |
script_execution_instruction |
RSE_script_selector input_assignment_list ? output_assignment_list ? script_execution_tail ?
| the section called “Script execution instruction” |
script_execution_tail |
on_error_clause ?
| the section called “Script execution tail” |
/* flow control */ | ||
if_then_else_instruction |
| the section called “if then else instruction” |
case_type_of_instruction |
| the section called “case type of instruction” |
case_type_of_when_clause |
| the section called “case type of instruction” |
exit_script_instruction |
"exit" "script"
| the section called “exit script instruction” |
/* loops */ | ||
repeat_while_instruction |
remark: | the section called “repeat while instruction” |
repeat_for_each_instruction |
remarks:
| the section called “repeat for each instruction” |
repeat_from_to_instruction |
remarks:
| the section called “repeat from to instruction” |
repeat_times_instruction |
remark: | the section called “repeat times instruction” |
repeat_forever_instruction |
| the section called “repeat forever instruction” |
repeat_tail | ( "counter" ":" variable_id ) ? ( "id" ":" identifier ) ? | the section called “repeat tail” |
exit_repeat_instruction |
"exit" "repeat" identifier ?
remarks:
| the section called “exit repeat instruction” |
next_repeat_instruction |
"next" "repeat" identifier ?
remarks:
| the section called “next repeat instruction” |
/* events */ | ||
generate_event_instruction | "generate" "event" event_id "from" expression | the section called “generate event instruction” |
on_event_instruction | "on" "event" event_id_list ( "in" event_source ) ? "execute" event_handler ( "handler" ":" variable_id ) ? | the section called “on event instruction” |
stop_event_handler_instruction | "stop" "event" "handler" expression | the section called “stop event handler instruction” |
event_source |
| |
event_id_list | ||
event_handler |
| |
/* error handling */ | ||
check_instruction |
"check" condition error_info ?
| the section called “check instruction” |
check_script_instruction |
"check" "script" condition error_info ?
| the section called “check script instruction” |
error_instruction |
"error" expression ( "id" ":" identifier ) ? ( "data" ":" expression ) ?
| the section called “error instruction” |
/* testing */ | ||
test_instruction |
"test" input_assignment *
| the section called “test instruction” |
verify_instruction |
"verify" condition error_info ?
| the section called “verify instruction” |
verify_error_instruction |
"verify" "error" error_info ?
| the section called “verify error instruction” |
/* embedded Java */ | ||
java_instruction |
| the section called “java instruction” |
Table 3.6. Script instruction components EBNF
| Production | Syntax | Links |
|---|---|---|
object_reference_selector | object_reference ( "." attribute_id ) * | |
assignable_object_reference_selector | assignable_object_reference ( "." attribute_id ) * | |
object_reference | ||
assignable_object_reference |
| |
object_type_selector |
| |
type_check_clause |
"type_check" ":" ( "yes" | "no" )
"remark: default value is | |
on_error_clause |
"on_error" ":" ( "exit_script" | "continue" )
"remark: default value is | |
input_assignment_list | "(" input_assignment ( ";" ? input_assignment ) * ")" | |
output_assignment_list |
"(" output_assignment ( ";" ? output_assignment ) * ")"
remark: if there are no input arguments assigned then the output argument assignment list must be preceded by | |
input_assignment |
( input_argument_id "=" ) ? expression
remark: | |
output_assignment | assignable_object_reference_selector "=" output_argument_id | |
condition |
| the section called “condition” |
error_info |
( "error_message" ":" expression ) ? ( "error_id" ":" identifier ) ? ( "error_data" ":" expression ) ?
| the section called “error info” |
Table 3.7. Expressions EBNF
| Production | Syntax | Links |
|---|---|---|
expression | and_expression ( ( "or" | "xor" ) and_expression ) * | Chapter 9, Expressions and operators |
and_expression | compare_expression ( "and" compare_expression ) * | |
compare_expression | add_expression comparison_operator add_expression | |
comparison_operator | "=r" | "=v" | "#r" | "#v" | ">" | ">=" | "<" | "<=" | |
add_expression | multiply_expression ( ( "+" | "-" | "&" ) multiply_expression ) * | |
multiply_expression | sign_expression ( ( "*" | "/" ) sign_expression ) * | |
sign_expression | ( "not" | "-" | "+" ) ? expression_path | |
expression_path | expression_value ( "." attribute_id_or_command_output ) * | |
expression_value |
| |
attribute_id_or_command_output |
| |
script_output | RSE_script_selector ( "." output_argument_id ) ? input_assignment_list ? |
Table 3.8. Selectors EBNF
Table 3.9. Identifiers EBNF
| Production | Syntax | Links |
|---|---|---|
library_id | "li_" ? identifier | |
type_id | "ty_" ? identifier | |
factory_id | "fa_" ? identifier | |
service_id | "se_" ? identifier | |
command_id | "co_" ? identifier | |
event_id | "ev_" ? identifier | |
enumerated_id | "en_" ? identifier | |
attribute_id | "a_" ? identifier | |
input_argument_id | "i_" ? identifier | |
output_argument_id | "o_" ? identifier | |
variable_id | "v_" ? identifier | |
constant_id | "c_" ? identifier | |
generic_type_id | "ge_" ? identifier | |
generic_factory_id | "ge_" ? identifier | |
generic_parameter_id | "pa_" ? identifier | |
source_code_template_id | "te_" ? identifier | |
template_parameter_id | "pa_" ? identifier | |
| . | ||
prefixed_identifier |
identifier_prefix identifier_prefix_terminator identifier
| the section called “Prefixed identifier” |
identifier_prefix |
letter *
| |
identifier_prefix_terminator |
"_"
| |
| . | ||
identifier |
letter ( letter | digit | "_" ) *
| the section called “Simple identifier” |
Table 3.10. Literals EBNF
| Production | Syntax | Links |
|---|---|---|
literal |
| |
| /* strings */ | ||
string_literal | the section called “String literal” | |
quoted_string_literal |
'"' ( Unicode_character | escape_character ) * '"'
remark: Unicode_character cannot be | the section called “Quoted string literal” |
triple_apostrophed_string_literal |
"'''" Unicode_character * "'''"
remark: characters are never escaped (e.g. | the section called “Triple apostrophed string literal” |
triple_quoted_string_literal |
'"""' ( Unicode_character | embedded_string_literal_expression ) * '"""'
remark: characters are never escaped (e.g. | the section called “Triple quoted string literal” |
embedded_string_literal_expression |
"{{" expression "}}"
remark: | the section called “Triple quoted string literal” |
configurable_string_literal | remark: not yet available | the section called “Configurable string literal” |
| . | ||
character_literal |
"'" ( Unicode_character | escape_character ) "'"
remark: Unicode_character cannot be | the section called “Character literal” |
| . | ||
integer_literal | unary_minus ? digit + | the section called “Integer literal” |
unary_minus | "-" | |
| . | ||
yes_no_literal | "yes" | "no" | the section called “Yes_no literal” |
| . | ||
void_literal | "void" | the section called “Void literal” |
| . | ||
Unicode_character | any Unicode_character, like A, B, C, 1, 2, 3, +, -, %, and so on | |
escape_character |
| |
| . | ||
letter | lowercase_letter | uppercase_letter | |
lowercase_letter | "a" | "b" | "c" | ... | "x" | "y" | "z" | |
uppercase_letter | "A" | "B" | "C" | ... | "X" | "Y" | "Z" | |
| . | ||
hex_digit |
| |
digit | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | |