company logo

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)