Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Реалізація високоуровнего інтерфейсу навколо бази даних Berclee DB

Реферат Реалізація високоуровнего інтерфейсу навколо бази даних Berclee DB





n Txn;};

hbTxn (const bexcp & excp, hbEnv & env1, ullong flags = 0, hbTxn * parent1 = 0);// молодші 32 біта це// звичайно. Берклі. прапори 33 біт відповідає за негайний старт транзакції одразу ж після створення

hbTxn (const bexcp & excp, hbTxn * parent1, ullong flags = 0);

// --- "--- p> ~ hbTxn ();

bool HaveParentTxn () {return parent! = 0;}

void Start (const bexcp & excp, ulong flags = 0);

void Commit (const bexcp & excp, ulong flags = 0);

void RollBack (const bexcp & excp);

// void RollBack ();

};

Його особливістю є те, що створений об'єкт транзакції не можна копіювати або створювати копіюванням. А також такий об'єкт повинен створюватися автоматично, тобто як стекова мінлива:

try

{

hbTxn tx (excp, parent_tx);

// операції з базою

tx.Commit ();

}

catch (...) {}
Як бачимо, перше - не треба піклуватися про видалення об'єкта транзакції (при будь-якій ситуації), друге - у разі виключення Rollback () викличеться автоматично в деструкції цього об'єкта.


Транслятор

Як вже говорилося, завдання транслятора полягає в тому, щоб створити за бажанням користувача максимально зручну оболонку для бібліотеки відповідно до його визначеннями основних елементів бази.

Файл граматики наведено нижче:

%%


# ---------------------------------------------- ---------

# ------ COMMENTS -------------------------------------- p> # ---------------------------------------------- ---------


# id ідентифікатор

# string строковий літерал або ідентифікатор

# num Чілова літерал

# float літерал числа з плаваючою точкою

# char символьний літерал

# rawcode :: = будь-яка последователность коду між '{*' і '*}'


file: 'End' {tblproc :: Finish ();}

| filetext 'End' {tblproc :: Finish ();}

;


filetext: item

| item filetext

;


item: optionblock

| idxblock

| structblock

| enumblock

| codeblock

| tableblock

;


literal: string {[$ _ [1], 0]}

| num {[$ _ [1], 1]}

| float {[$ _ [1], 2]}

| char {[$ _ [1], 3]}

;


# ---------------------------------------------- -----------

optionblock: 'option' '{' Oplist '}' ';'

{Tblproc :: OptBlockPrint ('', $ _ [3]);}

| 'option' opitem ';'

{Tblproc :: OptBlockPrint ('', [$ _ [2]]);}

| 'option' id '{' oplist '}' ';'

{Tblproc :: OptBlockPrint ($ _ [2], $ _ [4]);}

| 'option' id opitem ';'

{Tblproc :: OptBlockPrint ($ _ [2], [$ _ [3]]);}

;


oplist:

opitem ';' {[$ _ [1]]}

| opitem ';' Oplist {push @ {$ _ [3]}, $ _ [1]; $ _ [3]}

;


opitem: id '=' literal

{[$ _ [1], @ {$ _ [3]} [0], 0, @ {$ _ [3]} [1]]}

| id '=' id {[$ _ [1], $ _ [3], 1,'']}

;

# ---------------------------------------------- -----------

idxblock: 'idx' id idxitem ';'

{Tblproc :: IdxBlockPrint ($ _ [2], [$ _ [3]]);}

| 'idx' id '{' Idxitemlist '}' ';'

{Tblproc :: IdxBlockPrint ($ _ [2], $ _ [4]);}

;


idxitemlist: idxitem ';' {[$ _ [1]]}

| idxitem ';' Idxitemlist {unshift @ {$ _ [3]}, $ _ [1]; $ _ [3]}

;

idxitem: idxmod1 id '(' flist1 ')'

{[0, $ _ [1], $ _ [2], $ _ [4],'']}

| idxmod1 id '(' flist1 ')' '{*' rawcode '*}'

{[0, $ _ [1], $ _ [2], $ _ [4], $ _ [7]]}

| idxmod2 id '(' flist2 ')' {[1, $ _ [1], $ _ [2], $ _ [4],'']}

| idxmod2 id '(' flist2 ')' '{*' rawcode '*}'

{[1, $ _ [1], $ _ [2], $ _ [4], $ _ [7]]}

;


idxmod1: '.!'

| ':!'

| '%!'

;


idxmod2: '.'

| ':'

| '%'

;


flist1: id {[[$ _ [1],'']]}

| id ',' flist1 {unshift

@ {$ _ [3]}, [$ _ [1],'']; $ _ [3]}

;


flist2: idxmod3 id {[[$ _ [2], $ _ [1]]]}

| idxmod3 id ',' flist2 {unshift

@ {$ _ [4]}, [$ _ [2], $ _ [1]]; $ _ [4]}

;


idxmod3: '+'

| '-'

| '^'

;


# ---------------------------------------------- -----------

codeblock: code 'decl'...


Назад | сторінка 9 з 14 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Створення звіту як об'єкта бази даних. Експертні і навчальні системи
  • Реферат на тему: Розробка інтерфейсу користувача для роботи з базою даних &Автомайстерня&
  • Реферат на тему: Розробка інтерфейсу користувача для роботи з базою даних Будинку культури
  • Реферат на тему: Розробка бази даних для об'єкта автоматизації: гомеопатична аптека
  • Реферат на тему: Розробка бази даних для об'єкта автоматизації: відділу обробки замовлен ...