Documentation
¶
Overview ¶
Package javascript is the grammar javascript 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" SymIdentifier transit.Symbol = 1 // "identifier" SymHashBangLine transit.Symbol = 2 // "hash_bang_line" AnonSymExport transit.Symbol = 3 // "export" AnonSymSTAR transit.Symbol = 4 // "*" AnonSymDefault transit.Symbol = 5 // "default" AnonSymAs transit.Symbol = 6 // "as" AnonSymLBRACE transit.Symbol = 7 // "{" AnonSymCOMMA transit.Symbol = 8 // "," AnonSymRBRACE transit.Symbol = 9 // "}" AnonSymImport transit.Symbol = 10 // "import" AnonSymFrom transit.Symbol = 11 // "from" AnonSymWith transit.Symbol = 12 // "with" AnonSymVar transit.Symbol = 13 // "var" AnonSymLet transit.Symbol = 14 // "let" AnonSymConst transit.Symbol = 15 // "const" AnonSymUsing transit.Symbol = 16 // "using" AnonSymAwait transit.Symbol = 17 // "await" AnonSymOf transit.Symbol = 18 // "of" AnonSymElse transit.Symbol = 19 // "else" AnonSymIf transit.Symbol = 20 // "if" AnonSymSwitch transit.Symbol = 21 // "switch" AnonSymFor transit.Symbol = 22 // "for" AnonSymLPAREN transit.Symbol = 23 // "(" AnonSymSEMI transit.Symbol = 24 // ";" AnonSymRPAREN transit.Symbol = 25 // ")" AnonSymIn transit.Symbol = 26 // "in" AnonSymWhile transit.Symbol = 27 // "while" AnonSymDo transit.Symbol = 28 // "do" AnonSymTry transit.Symbol = 29 // "try" AnonSymBreak transit.Symbol = 30 // "break" AnonSymContinue transit.Symbol = 31 // "continue" AnonSymDebugger transit.Symbol = 32 // "debugger" AnonSymReturn transit.Symbol = 33 // "return" AnonSymThrow transit.Symbol = 34 // "throw" AnonSymCOLON transit.Symbol = 35 // ":" AnonSymCase transit.Symbol = 36 // "case" AnonSymCatch transit.Symbol = 37 // "catch" AnonSymFinally transit.Symbol = 38 // "finally" AnonSymYield transit.Symbol = 39 // "yield" AnonSymEQ transit.Symbol = 40 // "=" AnonSymLBRACK transit.Symbol = 41 // "[" AnonSymRBRACK transit.Symbol = 42 // "]" SymHtmlCharacterReference transit.Symbol = 43 // "html_character_reference" AnonSymLT transit.Symbol = 44 // "<" AnonSymGT transit.Symbol = 45 // ">" SymJsxIdentifier transit.Symbol = 46 // "identifier" AnonSymDOT transit.Symbol = 47 // "." AnonSymLTSLASH transit.Symbol = 48 // "</" AnonSymSLASHGT transit.Symbol = 49 // "/>" AnonSymDQUOTE transit.Symbol = 50 // "\"" AnonSymSQUOTE transit.Symbol = 51 // "'" SymUnescapedDoubleJsxStringFragment transit.Symbol = 52 // "string_fragment" SymUnescapedSingleJsxStringFragment transit.Symbol = 53 // "string_fragment" AnonSymClass transit.Symbol = 54 // "class" AnonSymExtends transit.Symbol = 55 // "extends" AnonSymAsync transit.Symbol = 56 // "async" AnonSymFunction transit.Symbol = 57 // "function" AnonSymEQGT transit.Symbol = 58 // "=>" SymOptionalChain transit.Symbol = 59 // "optional_chain" AnonSymNew transit.Symbol = 60 // "new" AnonSymPLUSEQ transit.Symbol = 61 // "+=" AnonSymDASHEQ transit.Symbol = 62 // "-=" AnonSymSTAREQ transit.Symbol = 63 // "*=" AnonSymSLASHEQ transit.Symbol = 64 // "/=" AnonSymPERCENTEQ transit.Symbol = 65 // "%=" AnonSymCARETEQ transit.Symbol = 66 // "^=" AnonSymAMPEQ transit.Symbol = 67 // "&=" AnonSymPIPEEQ transit.Symbol = 68 // "|=" AnonSymGTGTEQ transit.Symbol = 69 // ">>=" AnonSymGTGTGTEQ transit.Symbol = 70 // ">>>=" AnonSymLTLTEQ transit.Symbol = 71 // "<<=" AnonSymSTARSTAREQ transit.Symbol = 72 // "**=" AnonSymAMPAMPEQ transit.Symbol = 73 // "&&=" AnonSymPIPEPIPEEQ transit.Symbol = 74 // "||=" AnonSymQMARKQMARKEQ transit.Symbol = 75 // "??=" AnonSymDOTDOTDOT transit.Symbol = 76 // "..." AnonSymAMPAMP transit.Symbol = 77 // "&&" AnonSymPIPEPIPE transit.Symbol = 78 // "||" AnonSymGTGT transit.Symbol = 79 // ">>" AnonSymGTGTGT transit.Symbol = 80 // ">>>" AnonSymLTLT transit.Symbol = 81 // "<<" AnonSymAMP transit.Symbol = 82 // "&" AnonSymCARET transit.Symbol = 83 // "^" AnonSymPIPE transit.Symbol = 84 // "|" AnonSymPLUS transit.Symbol = 85 // "+" AnonSymDASH transit.Symbol = 86 // "-" AnonSymSLASH transit.Symbol = 87 // "/" AnonSymPERCENT transit.Symbol = 88 // "%" AnonSymSTARSTAR transit.Symbol = 89 // "**" AnonSymLTEQ transit.Symbol = 90 // "<=" AnonSymEQEQ transit.Symbol = 91 // "==" AnonSymEQEQEQ transit.Symbol = 92 // "===" AnonSymBANGEQ transit.Symbol = 93 // "!=" AnonSymBANGEQEQ transit.Symbol = 94 // "!==" AnonSymGTEQ transit.Symbol = 95 // ">=" AnonSymQMARKQMARK transit.Symbol = 96 // "??" AnonSymInstanceof transit.Symbol = 97 // "instanceof" AnonSymBANG transit.Symbol = 98 // "!" AnonSymTILDE transit.Symbol = 99 // "~" AnonSymTypeof transit.Symbol = 100 // "typeof" AnonSymVoid transit.Symbol = 101 // "void" AnonSymDelete transit.Symbol = 102 // "delete" AnonSymPLUSPLUS transit.Symbol = 103 // "++" AnonSymDASHDASH transit.Symbol = 104 // "--" SymUnescapedDoubleStringFragment transit.Symbol = 105 // "string_fragment" SymUnescapedSingleStringFragment transit.Symbol = 106 // "string_fragment" SymEscapeSequence transit.Symbol = 107 // "escape_sequence" SymComment transit.Symbol = 108 // "comment" AnonSymBQUOTE transit.Symbol = 109 // "`" AnonSymDOLLARLBRACE transit.Symbol = 110 // "${" AnonSymSLASH2 transit.Symbol = 111 // "/" SymRegexPattern transit.Symbol = 112 // "regex_pattern" SymRegexFlags transit.Symbol = 113 // "regex_flags" SymNumber transit.Symbol = 114 // "number" SymPrivatePropertyIdentifier transit.Symbol = 115 // "private_property_identifier" AnonSymTarget transit.Symbol = 116 // "target" AnonSymMeta transit.Symbol = 117 // "meta" SymThis transit.Symbol = 118 // "this" SymSuper transit.Symbol = 119 // "super" SymTrue transit.Symbol = 120 // "true" SymFalse transit.Symbol = 121 // "false" SymNull transit.Symbol = 122 // "null" SymUndefined transit.Symbol = 123 // "undefined" AnonSymAT transit.Symbol = 124 // "@" AnonSymStatic transit.Symbol = 125 // "static" AuxSymMethodDefinitionToken1 transit.Symbol = 126 // "static get" AnonSymGet transit.Symbol = 127 // "get" AnonSymSet transit.Symbol = 128 // "set" SymAutomaticSemicolon transit.Symbol = 129 // "_automatic_semicolon" SymTemplateChars transit.Symbol = 130 // "string_fragment" SymTernaryQmark transit.Symbol = 131 // "?" SymHtmlComment transit.Symbol = 132 // "html_comment" SymJsxText transit.Symbol = 133 // "jsx_text" SymProgram transit.Symbol = 134 // "program" SymExportStatement transit.Symbol = 135 // "export_statement" SymNamespaceExport transit.Symbol = 136 // "namespace_export" SymExportClause transit.Symbol = 137 // "export_clause" SymExportSpecifier transit.Symbol = 138 // "export_specifier" SymModuleExportName transit.Symbol = 139 // "_module_export_name" SymDeclaration transit.Symbol = 140 // "declaration" SymImport transit.Symbol = 141 // "import" SymImportStatement transit.Symbol = 142 // "import_statement" SymImportClause transit.Symbol = 143 // "import_clause" SymFromClause transit.Symbol = 144 // "_from_clause" SymNamespaceImport transit.Symbol = 145 // "namespace_import" SymNamedImports transit.Symbol = 146 // "named_imports" SymImportSpecifier transit.Symbol = 147 // "import_specifier" SymImportAttribute transit.Symbol = 148 // "import_attribute" SymStatement transit.Symbol = 149 // "statement" SymExpressionStatement transit.Symbol = 150 // "expression_statement" SymVariableDeclaration transit.Symbol = 151 // "variable_declaration" SymLexicalDeclaration transit.Symbol = 152 // "lexical_declaration" SymUsingDeclaration transit.Symbol = 153 // "using_declaration" SymVariableDeclarator transit.Symbol = 154 // "variable_declarator" SymStatementBlock transit.Symbol = 155 // "statement_block" SymElseClause transit.Symbol = 156 // "else_clause" SymIfStatement transit.Symbol = 157 // "if_statement" SymSwitchStatement transit.Symbol = 158 // "switch_statement" SymForStatement transit.Symbol = 159 // "for_statement" SymForInStatement transit.Symbol = 160 // "for_in_statement" SymForHeader transit.Symbol = 161 // "_for_header" SymWhileStatement transit.Symbol = 162 // "while_statement" SymDoStatement transit.Symbol = 163 // "do_statement" SymTryStatement transit.Symbol = 164 // "try_statement" SymWithStatement transit.Symbol = 165 // "with_statement" SymBreakStatement transit.Symbol = 166 // "break_statement" SymContinueStatement transit.Symbol = 167 // "continue_statement" SymDebuggerStatement transit.Symbol = 168 // "debugger_statement" SymReturnStatement transit.Symbol = 169 // "return_statement" SymThrowStatement transit.Symbol = 170 // "throw_statement" SymEmptyStatement transit.Symbol = 171 // "empty_statement" SymLabeledStatement transit.Symbol = 172 // "labeled_statement" SymSwitchBody transit.Symbol = 173 // "switch_body" SymSwitchCase transit.Symbol = 174 // "switch_case" SymSwitchDefault transit.Symbol = 175 // "switch_default" SymCatchClause transit.Symbol = 176 // "catch_clause" SymFinallyClause transit.Symbol = 177 // "finally_clause" SymParenthesizedExpression transit.Symbol = 178 // "parenthesized_expression" SymExpression transit.Symbol = 179 // "expression" SymPrimaryExpression transit.Symbol = 180 // "primary_expression" SymYieldExpression transit.Symbol = 181 // "yield_expression" SymObject transit.Symbol = 182 // "object" SymObjectPattern transit.Symbol = 183 // "object_pattern" SymAssignmentPattern transit.Symbol = 184 // "assignment_pattern" SymObjectAssignmentPattern transit.Symbol = 185 // "object_assignment_pattern" SymArray transit.Symbol = 186 // "array" SymArrayPattern transit.Symbol = 187 // "array_pattern" SymJsxElement transit.Symbol = 188 // "jsx_element" SymJsxExpression transit.Symbol = 189 // "jsx_expression" SymJsxOpeningElement transit.Symbol = 190 // "jsx_opening_element" SymNestedIdentifier transit.Symbol = 191 // "member_expression" SymJsxNamespaceName transit.Symbol = 192 // "jsx_namespace_name" SymJsxClosingElement transit.Symbol = 193 // "jsx_closing_element" SymJsxSelfClosingElement transit.Symbol = 194 // "jsx_self_closing_element" SymJsxAttribute transit.Symbol = 195 // "jsx_attribute" SymJsxString transit.Symbol = 196 // "string" SymClass transit.Symbol = 197 // "class" SymClassDeclaration transit.Symbol = 198 // "class_declaration" SymClassHeritage transit.Symbol = 199 // "class_heritage" SymFunctionExpression transit.Symbol = 200 // "function_expression" SymFunctionDeclaration transit.Symbol = 201 // "function_declaration" SymGeneratorFunction transit.Symbol = 202 // "generator_function" SymGeneratorFunctionDeclaration transit.Symbol = 203 // "generator_function_declaration" SymArrowFunction transit.Symbol = 204 // "arrow_function" SymCallExpression transit.Symbol = 205 // "call_expression" SymNewExpression transit.Symbol = 206 // "new_expression" SymAwaitExpression transit.Symbol = 207 // "await_expression" SymMemberExpression transit.Symbol = 208 // "member_expression" SymSubscriptExpression transit.Symbol = 209 // "subscript_expression" SymAssignmentExpression transit.Symbol = 210 // "assignment_expression" SymAugmentedAssignmentLhs transit.Symbol = 211 // "_augmented_assignment_lhs" SymAugmentedAssignmentExpression transit.Symbol = 212 // "augmented_assignment_expression" SymInitializer transit.Symbol = 213 // "_initializer" SymDestructuringPattern transit.Symbol = 214 // "_destructuring_pattern" SymSpreadElement transit.Symbol = 215 // "spread_element" SymTernaryExpression transit.Symbol = 216 // "ternary_expression" SymBinaryExpression transit.Symbol = 217 // "binary_expression" SymUnaryExpression transit.Symbol = 218 // "unary_expression" SymUpdateExpression transit.Symbol = 219 // "update_expression" SymSequenceExpression transit.Symbol = 220 // "sequence_expression" SymString transit.Symbol = 221 // "string" SymTemplateString transit.Symbol = 222 // "template_string" SymTemplateSubstitution transit.Symbol = 223 // "template_substitution" SymRegex transit.Symbol = 224 // "regex" SymMetaProperty transit.Symbol = 225 // "meta_property" SymArguments transit.Symbol = 226 // "arguments" SymDecorator transit.Symbol = 227 // "decorator" SymDecoratorMemberExpression transit.Symbol = 228 // "member_expression" SymDecoratorCallExpression transit.Symbol = 229 // "call_expression" SymClassBody transit.Symbol = 230 // "class_body" SymFieldDefinition transit.Symbol = 231 // "field_definition" SymFormalParameters transit.Symbol = 232 // "formal_parameters" SymClassStaticBlock transit.Symbol = 233 // "class_static_block" SymPattern transit.Symbol = 234 // "pattern" SymRestPattern transit.Symbol = 235 // "rest_pattern" SymMethodDefinition transit.Symbol = 236 // "method_definition" SymPair transit.Symbol = 237 // "pair" SymPairPattern transit.Symbol = 238 // "pair_pattern" SymPropertyName transit.Symbol = 239 // "_property_name" SymComputedPropertyName transit.Symbol = 240 // "computed_property_name" AuxSymProgramRepeat1 transit.Symbol = 241 // "program_repeat1" AuxSymExportStatementRepeat1 transit.Symbol = 242 // "export_statement_repeat1" AuxSymExportClauseRepeat1 transit.Symbol = 243 // "export_clause_repeat1" AuxSymNamedImportsRepeat1 transit.Symbol = 244 // "named_imports_repeat1" AuxSymVariableDeclarationRepeat1 transit.Symbol = 245 // "variable_declaration_repeat1" AuxSymSwitchBodyRepeat1 transit.Symbol = 246 // "switch_body_repeat1" AuxSymObjectRepeat1 transit.Symbol = 247 // "object_repeat1" AuxSymObjectPatternRepeat1 transit.Symbol = 248 // "object_pattern_repeat1" AuxSymArrayRepeat1 transit.Symbol = 249 // "array_repeat1" AuxSymArrayPatternRepeat1 transit.Symbol = 250 // "array_pattern_repeat1" AuxSymJsxElementRepeat1 transit.Symbol = 251 // "jsx_element_repeat1" AuxSymJsxOpeningElementRepeat1 transit.Symbol = 252 // "jsx_opening_element_repeat1" AuxSymJsxStringRepeat1 transit.Symbol = 253 // "_jsx_string_repeat1" AuxSymJsxStringRepeat2 transit.Symbol = 254 // "_jsx_string_repeat2" AuxSymSequenceExpressionRepeat1 transit.Symbol = 255 // "sequence_expression_repeat1" AuxSymStringRepeat1 transit.Symbol = 256 // "string_repeat1" AuxSymStringRepeat2 transit.Symbol = 257 // "string_repeat2" AuxSymTemplateStringRepeat1 transit.Symbol = 258 // "template_string_repeat1" AuxSymClassBodyRepeat1 transit.Symbol = 259 // "class_body_repeat1" AuxSymFormalParametersRepeat1 transit.Symbol = 260 // "formal_parameters_repeat1" AliasSymPropertyIdentifier transit.Symbol = 261 // "property_identifier" AliasSymShorthandPropertyIdentifier transit.Symbol = 262 // "shorthand_property_identifier" AliasSymShorthandPropertyIdentifierPattern transit.Symbol = 263 // "shorthand_property_identifier_pattern" AliasSymStatementIdentifier transit.Symbol = 264 // "statement_identifier" )
The symbols of the grammar javascript, as Node.KindID and Node.GrammarID return them. The comment of each one is its name.
const ( FieldAlias transit.FieldID = 1 // "alias" FieldAlternative transit.FieldID = 2 // "alternative" FieldArgument transit.FieldID = 3 // "argument" FieldArguments transit.FieldID = 4 // "arguments" FieldAttribute transit.FieldID = 5 // "attribute" FieldBody transit.FieldID = 6 // "body" FieldCloseTag transit.FieldID = 7 // "close_tag" FieldCondition transit.FieldID = 8 // "condition" FieldConsequence transit.FieldID = 9 // "consequence" FieldConstructor transit.FieldID = 10 // "constructor" FieldDeclaration transit.FieldID = 11 // "declaration" FieldDecorator transit.FieldID = 12 // "decorator" FieldFinalizer transit.FieldID = 13 // "finalizer" FieldFlags transit.FieldID = 14 // "flags" FieldFunction transit.FieldID = 15 // "function" FieldHandler transit.FieldID = 16 // "handler" FieldIncrement transit.FieldID = 17 // "increment" FieldIndex transit.FieldID = 18 // "index" FieldInitializer transit.FieldID = 19 // "initializer" FieldKey transit.FieldID = 20 // "key" FieldKind transit.FieldID = 21 // "kind" FieldLabel transit.FieldID = 22 // "label" FieldLeft transit.FieldID = 23 // "left" FieldMember transit.FieldID = 24 // "member" FieldName transit.FieldID = 25 // "name" FieldObject transit.FieldID = 26 // "object" FieldOpenTag transit.FieldID = 27 // "open_tag" FieldOperator transit.FieldID = 28 // "operator" FieldOptionalChain transit.FieldID = 29 // "optional_chain" FieldParameter transit.FieldID = 30 // "parameter" FieldParameters transit.FieldID = 31 // "parameters" FieldPattern transit.FieldID = 32 // "pattern" FieldProperty transit.FieldID = 33 // "property" FieldRight transit.FieldID = 34 // "right" FieldSource transit.FieldID = 35 // "source" FieldValue transit.FieldID = 36 // "value" )
The fields of the grammar javascript, as Node.ChildByFieldID takes them. The comment of each one is its name.
Variables ¶
var Queries embed.FS
Queries holds queries/ of the grammar javascript: 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 javascript: 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 javascript. Its external scanner is the scanner that newScanner returns.
Example ¶
This example parses a text of the grammar javascript, the input of the corpus case "expressions/Strings", 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/javascript"
)
func main() {
language := javascript.Language()
parser := transit.NewParser()
if err := parser.SetLanguage(language); err != nil {
log.Fatal(err)
}
src := []byte(`
"A string with \"double\" and 'single' quotes";
'A string with "double" and \'single\' quotes';
'\\'
"\\"
'A string with new \
line';
`)
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(javascript.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(javascript.Queries, "queries", walk); err != nil {
log.Fatal(err)
}
}
Output: (program (expression_statement (string (string_fragment) (escape_sequence) (string_fragment) (escape_sequence) (string_fragment))) (expression_statement (string (string_fragment) (escape_sequence) (string_fragment) (escape_sequence) (string_fragment))) (expression_statement (string (escape_sequence))) (expression_statement (string (escape_sequence))) (expression_statement (string (string_fragment) (escape_sequence) (string_fragment)))) patterns in queries/highlights-jsx.scm: 7 patterns in queries/highlights-params.scm: 1 patterns in queries/highlights.scm: 27 patterns in queries/injections.scm: 4 patterns in queries/locals.scm: 4 patterns in queries/tags.scm: 11
Types ¶
This section is empty.