Common symbol definitions
This BNF class defines common symbols and keywords used in different BNF classes.
// 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
comment_block := comment_begin anychar(*) comment_end
comment_begin :: '/*'
// this line causes compile errors when compiling the generated parser and should be removed in parser comments
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)
string ::= ref(std_string)
compname ::= ref(std_compname)
anychar ::= ref(std_anychar)
spec_symbols ::= class(BNFSpecialSymbols)
multiple_line ::= ref(spec_line)

