nim / latest / parsesql.html

std/parsesql

Source Edit

The parsesql module implements a high performance SQL file parser. It parses PostgreSQL syntax and the SQL ANSI standard.

Unstable API.

Imports

strutils, lexbase, decode_helpers, streams

Types

SqlLexer = object of BaseLexer
the parser object. Source Edit
SqlNode = ref SqlNodeObj
an SQL abstract syntax tree node Source Edit
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
kind of SQL abstract syntax tree Source Edit
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
an SQL abstract syntax tree node Source Edit
SqlParseError = object of ValueError
Invalid SQL encountered Source Edit
SqlParser = object of SqlLexer
SQL parser object Source Edit

Procs

proc `$`(n: SqlNode): string {....raises: [Exception], tags: [RootEffect],
                               forbids: [].}
an alias for renderSql. Source Edit
proc `[]`(n: SqlNode; i: BackwardsIndex): SqlNode {....raises: [], tags: [],
    forbids: [].}
Source Edit
proc `[]`(n: SqlNode; i: int): SqlNode {....raises: [], tags: [], forbids: [].}
Source Edit
proc add(father, n: SqlNode) {....raises: [], tags: [], forbids: [].}
Source Edit
proc len(n: SqlNode): int {....raises: [], tags: [], forbids: [].}
Source Edit
proc newNode(k: SqlNodeKind): SqlNode {....raises: [], tags: [], forbids: [].}
Source Edit
proc newNode(k: SqlNodeKind; s: string): SqlNode {....raises: [], tags: [],
    forbids: [].}
Source Edit
proc newNode(k: SqlNodeKind; sons: seq[SqlNode]): SqlNode {....raises: [],
    tags: [], forbids: [].}
Source Edit
proc parseSql(input: Stream; filename: string): SqlNode {....raises: [IOError,
    OSError, IOError, OSError, ValueError, SqlParseError, Exception],
    tags: [ReadIOEffect, RootEffect, WriteIOEffect], forbids: [].}
parses the SQL from input into an AST and returns the AST. filename is only used for error messages. Syntax errors raise an SqlParseError exception. Source Edit
proc parseSql(input: string; filename = ""): SqlNode {.
    ...raises: [IOError, OSError, ValueError, SqlParseError, Exception],
    tags: [ReadIOEffect, RootEffect, WriteIOEffect], forbids: [].}
parses the SQL from input into an AST and returns the AST. filename is only used for error messages. Syntax errors raise an SqlParseError exception. Source Edit
proc renderSql(n: SqlNode; upperCase = false): string {....raises: [Exception],
    tags: [RootEffect], forbids: [].}
Converts an SQL abstract syntax tree to its string representation. Source Edit
proc treeRepr(s: SqlNode): string {....raises: [], tags: [], forbids: [].}
Source Edit

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