Spec-Zone.ru › Nim

std/parsesql

Источник Изменить

Модуль parsesql реализует высокопроизводительный парсер SQL-файлов. Он парсит синтаксис PostgreSQL и стандарт SQL ANSI.

Нестабильный API.

Импорты

strutils, lexbase, decode_helpers, streams

Типы

SqlLexer = object of BaseLexer
объект парсера. Источник Изменить
SqlNode = ref SqlNodeObj
узел абстрактного синтаксического дерева SQL Источник Изменить
SqlNodeKind = enum
  nkNone, nkIdent, nkQuotedIdent, nkStringLit, nkBitStringLit, nkHexStringLit,
  nkIntegerLit, nkNumericLit, nkPrimaryKey, nkForeignKey, nkNotNull, nkNull,
  nkStmtList, nkDot, nkDotDot, nkPrefix, nkInfix, nkCall, nkPrGroup,
  nkColumnReference, nkReferences, nkDefault, nkCheck, nkConstraint, nkUnique,
  nkIdentity, nkColumnDef,  ## name, datatype, constraints
  nkInsert, nkUpdate, nkDelete, nkSelect, nkSelectDistinct, nkSelectColumns,
  nkSelectPair, nkAsgn, nkFrom, nkFromItemPair, nkGroup, nkLimit, nkOffset,
  nkHaving, nkOrder, nkJoin, nkDesc, nkUnion, nkIntersect, nkExcept,
  nkColumnList, nkValueList, nkWhere, nkCreateTable, nkCreateTableIfNotExists,
  nkCreateType, nkCreateTypeIfNotExists, nkCreateIndex,
  nkCreateIndexIfNotExists, nkEnumDef
тип узла абстрактного синтаксического дерева SQL Источник Изменить
SqlNodeObj = object
  case kind*: SqlNodeKind    ## kind of syntax tree
  of LiteralNodes:
    strVal*: string          ## AST leaf: the identifier, numeric literal
                             ## string literal, etc.
  else:
    sons*: seq[SqlNode]      ## the node's children
узел абстрактного синтаксического дерева SQL Источник Изменить
SqlParseError = object of ValueError
Встречено неверное SQL-выражение Источник Изменить
SqlParser = object of SqlLexer
Объект парсера SQL Источник Изменить

Процедуры

proc `$`(n: SqlNode): string {....raises: [Exception], tags: [RootEffect],
                               forbids: [].}
псевдоним для renderSql. Источник Изменить
proc `[]`(n: SqlNode; i: BackwardsIndex): SqlNode {....raises: [], tags: [],
    forbids: [].}
Источник Изменить
proc `[]`(n: SqlNode; i: int): SqlNode {....raises: [], tags: [], forbids: [].}
Источник Изменить
proc add(father, n: SqlNode) {....raises: [], tags: [], forbids: [].}
Источник Изменить
proc len(n: SqlNode): int {....raises: [], tags: [], forbids: [].}
Источник Изменить
proc newNode(k: SqlNodeKind): SqlNode {....raises: [], tags: [], forbids: [].}
Источник Изменить
proc newNode(k: SqlNodeKind; s: string): SqlNode {....raises: [], tags: [],
    forbids: [].}
Источник Изменить
proc newNode(k: SqlNodeKind; sons: seq[SqlNode]): SqlNode {....raises: [],
    tags: [], forbids: [].}
Источник Изменить
proc parseSql(input: Stream; filename: string): SqlNode {....raises: [IOError,
    OSError, IOError, OSError, ValueError, SqlParseError, Exception],
    tags: [ReadIOEffect, RootEffect, WriteIOEffect], forbids: [].}
парсит SQL из input в AST и возвращает AST. filename используется только для сообщений об ошибках. Синтаксические ошибки вызывают исключение SqlParseError. Источник Изменить
proc parseSql(input: string; filename = ""): SqlNode {.
    ...raises: [IOError, OSError, ValueError, SqlParseError, Exception],
    tags: [ReadIOEffect, RootEffect, WriteIOEffect], forbids: [].}
парсит SQL из input в AST и возвращает AST. filename используется только для сообщений об ошибках. Синтаксические ошибки вызывают исключение SqlParseError. Источник Изменить
proc renderSql(n: SqlNode; upperCase = false): string {....raises: [Exception],
    tags: [RootEffect], forbids: [].}
Преобразует абстрактное синтаксическое дерево SQL в его строковое представление. Источник Изменить
proc treeRepr(s: SqlNode): string {....raises: [], tags: [], forbids: [].}
Источник Изменить

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/parsesql.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API