Documentation
¶
Overview ¶
Package sqlserver is the grammar TSQL for the Go runtime of transit. Language returns its language, and the constants name its symbols and its fields.
Index ¶
Examples ¶
Constants ¶
const ( BuiltinSymEnd transit.Symbol = 0 // "end" AuxSymGoStatementToken1 transit.Symbol = 1 // "go_statement_token1" AnonSymCOMMA transit.Symbol = 2 // "," AnonSymSEMI transit.Symbol = 3 // ";" AuxSymFuncProcNameServerDatabaseSchemaToken1 transit.Symbol = 4 // "func_proc_name_server_database_schema_token1" AuxSymExecuteStatementArgNamedToken1 transit.Symbol = 5 // "execute_statement_arg_named_token1" AnonSymEQ transit.Symbol = 6 // "=" SymOUTPUT transit.Symbol = 7 // "OUTPUT" SymDefault transit.Symbol = 8 // "default" SymNull transit.Symbol = 9 // "null_" AuxSymConstantToken1 transit.Symbol = 10 // "constant_token1" AuxSymConstantToken2 transit.Symbol = 11 // "constant_token2" AuxSymConstantToken3 transit.Symbol = 12 // "constant_token3" SymExecute transit.Symbol = 13 // "execute" AuxSymExecuteBodyToken1 transit.Symbol = 14 // "execute_body_token1" AnonSymLPAREN transit.Symbol = 15 // "(" AnonSymRPAREN transit.Symbol = 16 // ")" SymWITH transit.Symbol = 17 // "WITH" AuxSymRESULTSETSToken1 transit.Symbol = 18 // "RESULT_SETS_token1" AuxSymRESULTSETSToken2 transit.Symbol = 19 // "RESULT_SETS_token2" SymNONE transit.Symbol = 20 // "NONE" SymUNDEFINED transit.Symbol = 21 // "UNDEFINED" SymRECOMPILE transit.Symbol = 22 // "RECOMPILE" AuxSymASToken1 transit.Symbol = 23 // "AS_token1" SymLOGIN transit.Symbol = 24 // "LOGIN" SymUSER transit.Symbol = 25 // "USER" SymATKEYWORD transit.Symbol = 26 // "AT_KEYWORD" SymStringLit transit.Symbol = 27 // "string_lit" SymPLUS transit.Symbol = 28 // "PLUS" AuxSymQuerySpecificationToken1 transit.Symbol = 29 // "query_specification_token1" SymSelect transit.Symbol = 30 // "select" AnonSymPLUSEQ transit.Symbol = 31 // "+=" AnonSymDASHEQ transit.Symbol = 32 // "-=" AnonSymSTAREQ transit.Symbol = 33 // "*=" AnonSymSLASHEQ transit.Symbol = 34 // "/=" AnonSymPERCENTEQ transit.Symbol = 35 // "%=" AnonSymAMPEQ transit.Symbol = 36 // "&=" AnonSymCARETEQ transit.Symbol = 37 // "^=" AnonSymPIPEEQ transit.Symbol = 38 // "|=" SymAsterisk transit.Symbol = 39 // "asterisk" AnonSymCOLONCOLON transit.Symbol = 40 // "::" SymHierachyid transit.Symbol = 41 // "hierachyid_" SymGetDescendant transit.Symbol = 42 // "get_descendant_" SymGetReparentedValue transit.Symbol = 43 // "get_reparented_value_" SymGetancestor transit.Symbol = 44 // "getancestor_" SymIsDescendantOf transit.Symbol = 45 // "is_descendant_of_" SymGetlevel transit.Symbol = 46 // "getlevel_" SymGetroot transit.Symbol = 47 // "getroot_" SymTostring transit.Symbol = 48 // "tostring_" SymParse transit.Symbol = 49 // "parse_" SymDollarPartition transit.Symbol = 50 // "dollar_partition_" SymRight transit.Symbol = 51 // "right_" SymLeft transit.Symbol = 52 // "left_" SymBinaryChecksum transit.Symbol = 53 // "binary_checksum_" SymChecksum transit.Symbol = 54 // "checksum_" AuxSymOverToken1 transit.Symbol = 55 // "over__token1" AuxSymWithinGroupToken1 transit.Symbol = 56 // "within_group__token1" AuxSymWithinGroupToken2 transit.Symbol = 57 // "within_group__token2" SymPercentileCont transit.Symbol = 58 // "percentile_cont_" SymPercentileDisc transit.Symbol = 59 // "percentile_disc_" SymCumeDist transit.Symbol = 60 // "cume_dist_" SymPercentRank transit.Symbol = 61 // "percent_rank_" AuxSymIgnoreNullsToken1 transit.Symbol = 62 // "ignore_nulls__token1" AuxSymIgnoreNullsToken2 transit.Symbol = 63 // "ignore_nulls__token2" AuxSymRespectNullsToken1 transit.Symbol = 64 // "respect_nulls__token1" SymLag transit.Symbol = 65 // "lag_" SymLead transit.Symbol = 66 // "lead_" SymFirstValue transit.Symbol = 67 // "first_value_" SymLastValue transit.Symbol = 68 // "last_value_" SymChecksumAgg transit.Symbol = 69 // "checksum_agg_" SymCount transit.Symbol = 70 // "count_" SymCountBig transit.Symbol = 71 // "count_big_" SymAvg transit.Symbol = 72 // "avg_" SymMax transit.Symbol = 73 // "max_" SymMin transit.Symbol = 74 // "min_" SymSum transit.Symbol = 75 // "sum_" SymStdev transit.Symbol = 76 // "stdev_" SymStdevp transit.Symbol = 77 // "stdevp_" SymVar transit.Symbol = 78 // "var_" SymVarp transit.Symbol = 79 // "varp_" SymAll transit.Symbol = 80 // "all_" SymDistinct transit.Symbol = 81 // "distinct_" SymNtile transit.Symbol = 82 // "ntile_" SymRank transit.Symbol = 83 // "rank_" SymDenseRank transit.Symbol = 84 // "dense_rank_" SymRowNumber transit.Symbol = 85 // "row_number_" AuxSymPartitionByClauseToken1 transit.Symbol = 86 // "partition_by_clause_token1" AuxSymPartitionByClauseToken2 transit.Symbol = 87 // "partition_by_clause_token2" AuxSymOrderByClauseToken1 transit.Symbol = 88 // "order_by_clause_token1" AuxSymCollationToken1 transit.Symbol = 89 // "collation__token1" SymAsc transit.Symbol = 90 // "asc_" SymDesc transit.Symbol = 91 // "desc_" AuxSymWindowFrameExtentToken1 transit.Symbol = 92 // "window_frame_extent_token1" AuxSymWindowFrameExtentToken2 transit.Symbol = 93 // "window_frame_extent_token2" AuxSymWindowFrameFollowingToken1 transit.Symbol = 94 // "window_frame_following_token1" AuxSymWindowFrameFollowingToken2 transit.Symbol = 95 // "window_frame_following_token2" AuxSymWindowFramePrecedingToken1 transit.Symbol = 96 // "window_frame_preceding_token1" AuxSymWindowFramePrecedingToken2 transit.Symbol = 97 // "window_frame_preceding_token2" AuxSymWindowFramePrecedingToken3 transit.Symbol = 98 // "window_frame_preceding_token3" AuxSymRowOrRangeClauseToken1 transit.Symbol = 99 // "row_or_range_clause_token1" AuxSymRowOrRangeClauseToken2 transit.Symbol = 100 // "row_or_range_clause_token2" SymBinary transit.Symbol = 101 // "binary" AnonSymDOLLAR transit.Symbol = 102 // "$" AnonSymDASH transit.Symbol = 103 // "-" AnonSymPLUS transit.Symbol = 104 // "+" AuxSymRealToken1 transit.Symbol = 105 // "real__token1" AuxSymRealToken2 transit.Symbol = 106 // "real__token2" AuxSymIdToken1 transit.Symbol = 107 // "id__token1" AuxSymIdToken2 transit.Symbol = 108 // "id__token2" SymTsqlFile transit.Symbol = 109 // "tsql_file" SymBatch transit.Symbol = 110 // "batch" SymGoStatement transit.Symbol = 111 // "go_statement" SymExecuteBodyBatch transit.Symbol = 112 // "execute_body_batch" SymFuncProcNameServerDatabaseSchema transit.Symbol = 113 // "func_proc_name_server_database_schema" SymFuncProcNameDatabaseSchema transit.Symbol = 114 // "func_proc_name_database_schema" SymFuncProcNameSchema transit.Symbol = 115 // "func_proc_name_schema" SymExecuteStatementArg transit.Symbol = 116 // "execute_statement_arg" SymExecuteStatementArgNamed transit.Symbol = 117 // "execute_statement_arg_named" SymExecuteStatementArgUnnamed transit.Symbol = 118 // "execute_statement_arg_unnamed" SymExecuteParameter transit.Symbol = 119 // "execute_parameter" SymLOCALID transit.Symbol = 120 // "LOCAL_ID_" SymConstant transit.Symbol = 121 // "constant" SymSqlClauses transit.Symbol = 122 // "sql_clauses" SymAnotherStatement transit.Symbol = 123 // "another_statement" SymExecuteStatement transit.Symbol = 124 // "execute_statement" SymExecuteBody transit.Symbol = 125 // "execute_body" SymExecuteOption transit.Symbol = 126 // "execute_option" SymRESULTSETS transit.Symbol = 127 // "RESULT_SETS" SymAS transit.Symbol = 128 // "AS" SymExecuteVarString transit.Symbol = 129 // "execute_var_string" SymDmlClause transit.Symbol = 130 // "dml_clause" SymSelectStatementStandalone transit.Symbol = 131 // "select_statement_standalone" SymSelectStatement transit.Symbol = 132 // "select_statement" SymQueryExpression transit.Symbol = 133 // "query_expression" SymQuerySpecification transit.Symbol = 134 // "query_specification" SymSelectList transit.Symbol = 135 // "select_list" SymSelectListElem transit.Symbol = 136 // "select_list_elem" SymAssignmentOperator transit.Symbol = 137 // "assignment_operator" SymUdtElem transit.Symbol = 138 // "udt_elem" SymUdtMethodArguments transit.Symbol = 139 // "udt_method_arguments" SymExpressionElem transit.Symbol = 140 // "expression_elem" SymAsColumnAlias transit.Symbol = 141 // "as_column_alias" SymAs transit.Symbol = 142 // "as" SymColumnAlias transit.Symbol = 143 // "column_alias" SymTableSources transit.Symbol = 144 // "table_sources" SymTableSource transit.Symbol = 145 // "table_source" SymTableSourceItem transit.Symbol = 146 // "table_source_item" SymFullTableName transit.Symbol = 147 // "full_table_name" SymFullColumnName transit.Symbol = 148 // "full_column_name" SymExpression transit.Symbol = 149 // "expression" SymFunctionCall transit.Symbol = 150 // "function_call" SymHierarchyidStaticMethod transit.Symbol = 151 // "hierarchyid_static_method" SymPartitionFunction transit.Symbol = 152 // "partition_function" SymScalarFunctionName transit.Symbol = 153 // "scalar_function_name" SymAnalyticWindowedFunction transit.Symbol = 154 // "analytic_windowed_function" SymOver transit.Symbol = 155 // "over_" SymWithinGroup transit.Symbol = 156 // "within_group_" SymLagLeadArgs transit.Symbol = 157 // "lag_lead_args" SymIgnoreNulls transit.Symbol = 158 // "ignore_nulls_" SymRespectNulls transit.Symbol = 159 // "respect_nulls_" SymAggregateWindowedFunction transit.Symbol = 160 // "aggregate_windowed_function" SymAllDistinctExpression transit.Symbol = 161 // "all_distinct_expression" SymRankingWindowedFunction transit.Symbol = 162 // "ranking_windowed_function" SymOverClause transit.Symbol = 163 // "over_clause" SymPartitionByClause transit.Symbol = 164 // "partition_by_clause" SymExpressionList transit.Symbol = 165 // "expression_list_" SymOrderByClause transit.Symbol = 166 // "order_by_clause" SymOrderByExpression transit.Symbol = 167 // "order_by_expression" SymCollation transit.Symbol = 168 // "collation_" SymWindowFrameExtent transit.Symbol = 169 // "window_frame_extent" SymWindowFrameBound transit.Symbol = 170 // "window_frame_bound" SymWindowFrameFollowing transit.Symbol = 171 // "window_frame_following" SymWindowFramePreceding transit.Symbol = 172 // "window_frame_preceding" SymRowOrRangeClause transit.Symbol = 173 // "row_or_range_clause" SymPrimitiveExpression transit.Symbol = 174 // "primitive_expression" SymPrimitiveConstant transit.Symbol = 175 // "primitive_constant" SymMoney transit.Symbol = 176 // "money_" SymReal transit.Symbol = 177 // "real_" SymFloat transit.Symbol = 178 // "float_" SymDecimal transit.Symbol = 179 // "decimal_" SymId transit.Symbol = 180 // "id_" SymKeyword transit.Symbol = 181 // "keyword" SymInteger transit.Symbol = 182 // "integer" AuxSymTsqlFileRepeat1 transit.Symbol = 183 // "tsql_file_repeat1" AuxSymTsqlFileRepeat2 transit.Symbol = 184 // "tsql_file_repeat2" AuxSymBatchRepeat1 transit.Symbol = 185 // "batch_repeat1" AuxSymExecuteBodyBatchRepeat1 transit.Symbol = 186 // "execute_body_batch_repeat1" AuxSymExecuteStatementArgRepeat1 transit.Symbol = 187 // "execute_statement_arg_repeat1" AuxSymExecuteBodyRepeat1 transit.Symbol = 188 // "execute_body_repeat1" AuxSymExecuteBodyRepeat2 transit.Symbol = 189 // "execute_body_repeat2" AuxSymSelectListRepeat1 transit.Symbol = 190 // "select_list_repeat1" AuxSymExpressionListRepeat1 transit.Symbol = 191 // "expression_list__repeat1" AuxSymOrderByClauseRepeat1 transit.Symbol = 192 // "order_by_clause_repeat1" )
The symbols of the grammar TSQL, as Node.KindID and Node.GrammarID return them. The comment of each one is its name.
const ( FieldAggFunc transit.FieldID = 1 // "agg_func" FieldAscending transit.FieldID = 2 // "ascending" FieldCnt transit.FieldID = 3 // "cnt" FieldCollationName transit.FieldID = 4 // "collation_name" FieldCount transit.FieldID = 5 // "count" FieldDatabase transit.FieldID = 6 // "database" FieldDefault transit.FieldID = 7 // "default" FieldDescending transit.FieldID = 8 // "descending" FieldDollar transit.FieldID = 9 // "dollar" FieldExpressionAs transit.FieldID = 10 // "expressionAs" FieldFuncName transit.FieldID = 11 // "func_name" FieldInput transit.FieldID = 12 // "input" FieldLeftAlias transit.FieldID = 13 // "leftAlias" FieldLeftAssignment transit.FieldID = 14 // "leftAssignment" FieldLinkedServer transit.FieldID = 15 // "linkedServer" FieldName transit.FieldID = 16 // "name" FieldNonStaticAttr transit.FieldID = 17 // "non_static_attr" FieldOffset transit.FieldID = 18 // "offset" FieldOrderBy transit.FieldID = 19 // "order_by" FieldProcedure transit.FieldID = 20 // "procedure" FieldReturnStatus transit.FieldID = 21 // "return_status" FieldSchema transit.FieldID = 22 // "schema" FieldServer transit.FieldID = 23 // "server" FieldTable transit.FieldID = 24 // "table" FieldUdtColumnName transit.FieldID = 25 // "udt_column_name" FieldValue transit.FieldID = 26 // "value" )
The fields of the grammar TSQL, as Node.ChildByFieldID takes them. The comment of each one is its name.
Variables ¶
var Queries embed.FS
Queries holds queries/ of the grammar TSQL: its own queries, and in queries/<grammar>/ the queries of another grammar that its tree-sitter.json lists (D84).
Functions ¶
func Keywords ¶
func Keywords() []string
Keywords returns the keywords of the grammar TSQL: the tokens that the word token captures, and the reserved words. Each call returns a new slice.
func Language ¶
Language returns the language of the grammar TSQL.
Example ¶
This example parses a text of the grammar TSQL, the input of the corpus case "assignment_operator/assignment_operator PlusEqual", and prints its tree. Then it compiles each query of the package, and prints the number of its patterns.
package main
import (
"context"
"fmt"
"io/fs"
"log"
"path"
"github.com/xo/transit"
"github.com/xo/transit/grammars/sqlserver"
)
func main() {
language := sqlserver.Language()
parser := transit.NewParser()
if err := parser.SetLanguage(language); err != nil {
log.Fatal(err)
}
src := []byte(`select @foo+=baz`)
tree, err := parser.Parse(context.Background(), src, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(tree.RootNode())
walk := func(name string, d fs.DirEntry, err error) error {
if err != nil || d.IsDir() || path.Ext(name) != ".scm" {
return err
}
text, err := fs.ReadFile(sqlserver.Queries, name)
if err != nil {
return err
}
query, err := transit.NewQuery(language, string(text))
if err != nil {
return fmt.Errorf("compiling %s: %w", name, err)
}
fmt.Printf("patterns in %s: %d\n", name, query.PatternCount())
return nil
}
if err := fs.WalkDir(sqlserver.Queries, "queries", walk); err != nil {
log.Fatal(err)
}
}
Output: (tsql_file (batch (sql_clauses (dml_clause (select_statement_standalone (select_statement (query_expression (query_specification (select) (select_list (select_list_elem (LOCAL_ID_) (assignment_operator) (expression (full_column_name (id_))))))))))))) patterns in queries/highlights.scm: 35
Types ¶
This section is empty.