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

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





таблиці.

В· Enum блок - визначення С + + енумераторов, використовуваних у визначенні таблиці.

В· Code блок - блок сирого С + + коду встраімого безпосереднього в результуючий файл.

Транслятор складається з 3 основних частин лексики, семантики і пускового модуля, написаних на мові Perl.

Лексичний аналізатор створений з урахуванням цієї граматики і має наступний інтерфейс.

Prepare (array of lines);// Normal result == 0

token Next ();

Він підтримує також препроцессірованіе на рівні вкладень include.

Семантичний аналізатор складається з API, що викликаються як обробники подій (для інтерфейсу yapp вказуються у визначенні граматики).

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

Формат:

1) HibaseCompiler.pl [-f ім'я файлу] [-p шлях до hibase] [-d каталог, куди приміщ. сген стаб]

2) program | HibaseCompiler.pl [-p шлях до hibase] [-d каталог, куди приміщ. сген стаб].


6.Прімер роботи програми


В якості прикладу розглянемо таке визначення бази даних

Tables . def

code def top

{*

# include

# include

# include

# include


# include "../Hblib/consts.hh"

# include "../Hblib/ll.hh"

# include "../Hblib/utils.hh"

# include "../Hblib/hdb.hh"


# include "Tbmain.hh"

# include "Dbmain.hh"

*}


option

{

file = "Main";

namespace = "Hb";

};


table supplier

{

char [12] name.!;// key uh;// unq, hash

char [40] desc;

};


table thing

{

supplier + tsupplier;// зовнішнє посилання

char [12] name.!;// key uh;// unq, hash

char [40] desc;

};

end


У результаті роботи транслятора отримуємо 3 файлу: файл опису структур записів таблиць, файл визначення самих таблиць та бази і файл її реалізації:

hbmain.hh


namespace hb {

using namespace hb;

class mainEnv;


struct supplierKey

{

db_recno_t key;


inline void Export (FILE * f);

inline void Import (char *, uint);

supplierKey (const db_recno_t & key_temp);

supplierKey () {}

} __attribute__ ((Packed));

struct supplierVal

{

char name [12];

char desc [40];


inline void Export (FILE * f);

inline void Import (char *, uint);

supplierVal (char * name_temp, char * desc_temp);

supplierVal () {}

} __attribute__ ((Packed));

class qsupplier: public hbTable {

mainEnv & menv;

public:

qsupplier (mainEnv &);

inline void RefInit ();

static void GetRef_supplier (uint, char *, char *, db_recno_t * &, uint &);

static int qsupplier :: idx_name (Db * db, const Dbt * pk, const Dbt * pv, Dbt * fv);

};

struct isupplier_na me

{

char name [12];

char * Getname () {return name;}

isupplier_name (char * name_temp);

} __attribute__ ((Packed));


// --------------------------------------------- ---------------------------------


struct thingKey

{

db_recno_t key;


inline void Export (FILE * f);

inline void Import (char *, uint);

thingKey (const db_recno_t & key_temp);

thingKey () {}

} __attribute__ ((Packed));

struct thingVal

{

db_recno_t tsupplier;

char name [12];

char desc [40];


inline void Export (FILE * f);

inline void Import (char *, uint);

thingVal (const db_recno_t & tsupplier_temp, char * name_temp, char * desc_temp);

thingVal () {}

} __attribute__ ((Packed));



class qthing: public hbTable {

mainEnv & menv;

public:

qthing (mainEnv &);

inline void RefInit ();

static void GetRef_thing (uint, char *, char *, db_recno_t * &, uint &);

static int qthing :: idx_name (Db * Db, const Dbt * pk, const Dbt * pv, Dbt * fv);

};

struct ithing_name

{

char name [12];

char * Getname () {return name;}

ithing_name (char * name_temp);

} __attribute__ ((Packed));


// --------------------------------------------- ---------------------------------

};


dbmain.hh


namespace hb {

using namespace hb;

enum idxNames {

dbn_supplier_name = 0, dbn_thing_name = 0};

class mainEnv;

class mainEnv: public...


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





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

  • Реферат на тему: Розробка алгоритму роботи синтаксичного аналізатора тексту, а також бази да ...
  • Реферат на тему: Поняття та використання Network File System
  • Реферат на тему: The Marx's class
  • Реферат на тему: Розробка і реалізація програми на мові С ++ з використанням класу статичних ...
  • Реферат на тему: Програма, що реалізує роботу з текстом і збереженням даних у файл