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.

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