/SQL-interpreter

Реализация модельного SQL-интерпретатора на базе языка С++.

Primary LanguageC++

Реализация модельного SQL-интерпретатора на базе языка С++

Постановка задачи

  1. Реализация архитектуры «Клиент — Сервер».
  2. Реализация SQL-интерпретатора.
  3. Реализация модельного SQL-сервера на базе разработанного интерпретатора и предоставленной библиотеки классов для работы с файлами данных.
  4. Реализация интерфейса пользователя с модельным SQL-сервером.
  5. Реализация модельной базы данных, демонстрирующей работоспособность программ.

Поддерживаемые операции

SELECT — выбрать из БД данные, соответствующие запросу;

INSERT — вставитьновуюстрокуданныхвтаблицу;

UPDATE — обновить значения данных в существующей строке;

DELETE — удалить строку из таблицы;

CREATE — создать таблицу;

DROP — уничтожить таблицу.

Реализованная грамматика

<SQL-предложение> ::= 
    <SELECT-предложение> |
    <INSERT-предложение> | <UPDATE-предложение> |
    <DELETE-предложение> | <CREATE-предложение> |
    <DROP-предложение>

SELECT-предложение

<SELECT-предложение> ::= SELECT <список полей> 
    FROM <имя таблицы> <WHERE-клауза>

<список полей> ::= <имя поля> { , <имя поля> } | *

<имя таблицы> ::= <имя>

<имя поля> ::= <имя>

<имя> ::= <идентификатор языка Си>

INSERT-предложение

<INSERT-предложение> ::= INSERT INTO <имя таблицы> 
    (<значение поля> { , <значение поля> })

<значение поля> ::= <строка> | <длинное целое>

<строка> ::= '<символ> {<символ>}'

<символ> ::= <любой, представляемый в компьютере 
    символ кроме апострофа '>

UPDATE-предложение

<UPDATE-предложение> ::= UPDATE <имя таблицы> SET
    <имя поля> = <выражение> <WHERE-клауза>

DELETE-предложение

<DELETE-предложение> ::=
    DELETE FROM <имя таблицы> <WHERE-клауза>

CREATE-предложение

<CREATE-предложение> ::= CREATE TABLE 
    <имя таблицы> ( <список описаний полей> )

<список описаний полей> ::=
    <описание поля> { , <описание поля> }

<описание поля> ::= <имя поля> <тип поля>

<тип поля> ::= TEXT ( <целое без знака> ) | LONG

DROP-предложение

<DROP-предложение> ::= DROP TABLE <имя таблицы>

WHERE-клауза

<WHERE-клауза> ::= 
    WHERE <выражение> [ NOT ] IN ( <список констант> ) |
    WHERE <логическое выражение> |
    WHERE ALL

<строка-образец> ::= <строка>

<выражение> ::= <Long-выражение> | <Text-выражение>

<список констант> ::= <строка> { , <строка> } |
    <длинное целое> { , <длинное целое> }

<Long-выражение> ::= <Long-слагаемое> 
    { <+|-> <Long-слагаемое> }

<+|-> ::= + | -

<Long-слагаемое> ::= <Long-множитель> 
    { <*|/|%> <Long-множитель> }

<*|/|%> ::= * | / | %

<Long-множитель> ::= <Long-величина> |
    ( <Long-выражение> )

<Long-величина> ::= <имя поля типа LONG> |
    <длинное целое>

<Text-выражение> ::= <имя поля типа TEXT> | <строка>

<логическое выражение> ::= <логическое слагаемое>
    { OR <логическое слагаемое> }

<логическое слагаемое> ::= <логический множитель>
    { AND <логический множитель> }

<логический множитель> ::= NOT <логический множитель> |
    ( <логическое выражение> ) |(<отношение>)

<отношение> ::= <Text-отношение> | <Long-отношение>

<Text-отношение> ::= <Text-выражение>
    <операция сравнения> <Text-выражение>

<Long-отношение> ::= <Long-выражение>
    <операция сравнения> <Long-выражение>

<операциясравнения> ::= = | > | < | >= | <= | !=