Common symbol definitions
This BNF class defines common symbols and keywords used in different BNF classes.
// After generating source file, do not forget to remove comment_end definition in comment
OSICommon := '$@' // defined for providing the bnf class name
// data source
data_source := dictionary | datasource
datasource := [ comment_block(*) ] _datasource '=' location ';'
dictionary := [ comment_block(*) ] _dictionary '=' location ';' [database]
database := [ comment_block(*) ] _database '=' location ';'
location := string | identifier // ODABA extension
// comment blocks
block_intro := comment_block | pragma | imember | file_reference
file_reference := _include string ';'
pragma := '#' multiple_line
// comments have to be replaced: '/ *' '* /' --> 0x01 0x02 (spaces inserted for avoiding compiler errors)
comment_block := std_comment
// comment_block := comment_begin anychar(*) comment_end
// comment_begin :: '/ *'
// comment_end :: '* /'
// scoped names
scoped_name := identifier [scope_ext(*)]
scope_ext := scope_op identifier
identifier := compname
// common used keywords
_database := 'database' | __database
__database :: 'DATABASE'
_datasource := 'datasource' | __datasource
__datasource :: 'DATASOURCE'
any_type :: 'any' | 'void' | 'VOID' | 'ANY'
_include := 'include' | __include
__include :: 'INCLUDE'
_dictionary := 'dictionary' | __dictionary
__dictionary :: 'DICTIONARY'
update_option := _new | update
_new :: 'new' | 'NEW'
update := 'update' | __update
__update :: 'UPDATE'
scope_op := '::'
_switch :: 'switch' | 'SWITCH'
_case :: 'case' | 'CASE'
_default :: 'default' | 'DEFAULT' | 'other' | 'OTHER'
member_symbols ::= class(OSIMember)
imember ::= ref(imember)
std_symbols ::= class(BNFStandardSymbols)
std_comment ::= ref(std_comment)
string ::= ref(std_string)
compname ::= ref(std_compname)
anychar ::= ref(std_anychar)
spec_symbols ::= class(BNFSpecialSymbols)
multiple_line ::= ref(spec_line)