Spec-Zone.ru › Nim 1

parsesql

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

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

Импорты

strutils, lexbase, streams

Типы

SqlLexer = object of BaseLexer
  filename: string
объект парсера. Исходный код Редактировать
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, nkHaving,
  nkOrder, nkJoin, nkDesc, nkUnion, nkIntersect, nkExcept, nkColumnList,
  nkValueList, nkWhere, nkCreateTable, nkCreateTableIfNotExists, nkCreateType,
  nkCreateTypeIfNotExists, nkCreateIndex, nkCreateIndexIfNotExists, nkEnumDef
тип абстрактного синтаксического дерева SQL Исходный код Редактировать
SqlParseError = object of ValueError
обнаружено неверное SQL Исходный код Редактировать
SqlNode = ref SqlNodeObj
узел абстрактного синтаксического дерева 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 Исходный код Редактировать
SqlParser = object of SqlLexer
  tok: Token
объект парсера SQL Исходный код Редактировать

Процедуры

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

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

Spec-Zone.ru

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