]> luflow.net public git repositories - flow-web.git/blob - static/highlight/es/languages/tcl.js
Initial commit.
[flow-web.git] / static / highlight / es / languages / tcl.js
1 /*! `tcl` grammar compiled for Highlight.js 11.11.1 */
2 var hljsGrammar = (function () {
3 'use strict';
4
5 /*
6 Language: Tcl
7 Description: Tcl is a very simple programming language.
8 Author: Radek Liska <radekliska@gmail.com>
9 Website: https://www.tcl.tk/about/language.html
10 Category: scripting
11 */
12
13 function tcl(hljs) {
14 const regex = hljs.regex;
15 const TCL_IDENT = /[a-zA-Z_][a-zA-Z0-9_]*/;
16
17 const NUMBER = {
18 className: 'number',
19 variants: [
20 hljs.BINARY_NUMBER_MODE,
21 hljs.C_NUMBER_MODE
22 ]
23 };
24
25 const KEYWORDS = [
26 "after",
27 "append",
28 "apply",
29 "array",
30 "auto_execok",
31 "auto_import",
32 "auto_load",
33 "auto_mkindex",
34 "auto_mkindex_old",
35 "auto_qualify",
36 "auto_reset",
37 "bgerror",
38 "binary",
39 "break",
40 "catch",
41 "cd",
42 "chan",
43 "clock",
44 "close",
45 "concat",
46 "continue",
47 "dde",
48 "dict",
49 "encoding",
50 "eof",
51 "error",
52 "eval",
53 "exec",
54 "exit",
55 "expr",
56 "fblocked",
57 "fconfigure",
58 "fcopy",
59 "file",
60 "fileevent",
61 "filename",
62 "flush",
63 "for",
64 "foreach",
65 "format",
66 "gets",
67 "glob",
68 "global",
69 "history",
70 "http",
71 "if",
72 "incr",
73 "info",
74 "interp",
75 "join",
76 "lappend|10",
77 "lassign|10",
78 "lindex|10",
79 "linsert|10",
80 "list",
81 "llength|10",
82 "load",
83 "lrange|10",
84 "lrepeat|10",
85 "lreplace|10",
86 "lreverse|10",
87 "lsearch|10",
88 "lset|10",
89 "lsort|10",
90 "mathfunc",
91 "mathop",
92 "memory",
93 "msgcat",
94 "namespace",
95 "open",
96 "package",
97 "parray",
98 "pid",
99 "pkg::create",
100 "pkg_mkIndex",
101 "platform",
102 "platform::shell",
103 "proc",
104 "puts",
105 "pwd",
106 "read",
107 "refchan",
108 "regexp",
109 "registry",
110 "regsub|10",
111 "rename",
112 "return",
113 "safe",
114 "scan",
115 "seek",
116 "set",
117 "socket",
118 "source",
119 "split",
120 "string",
121 "subst",
122 "switch",
123 "tcl_endOfWord",
124 "tcl_findLibrary",
125 "tcl_startOfNextWord",
126 "tcl_startOfPreviousWord",
127 "tcl_wordBreakAfter",
128 "tcl_wordBreakBefore",
129 "tcltest",
130 "tclvars",
131 "tell",
132 "time",
133 "tm",
134 "trace",
135 "unknown",
136 "unload",
137 "unset",
138 "update",
139 "uplevel",
140 "upvar",
141 "variable",
142 "vwait",
143 "while"
144 ];
145
146 return {
147 name: 'Tcl',
148 aliases: [ 'tk' ],
149 keywords: KEYWORDS,
150 contains: [
151 hljs.COMMENT(';[ \\t]*#', '$'),
152 hljs.COMMENT('^[ \\t]*#', '$'),
153 {
154 beginKeywords: 'proc',
155 end: '[\\{]',
156 excludeEnd: true,
157 contains: [
158 {
159 className: 'title',
160 begin: '[ \\t\\n\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',
161 end: '[ \\t\\n\\r]',
162 endsWithParent: true,
163 excludeEnd: true
164 }
165 ]
166 },
167 {
168 className: "variable",
169 variants: [
170 { begin: regex.concat(
171 /\$/,
172 regex.optional(/::/),
173 TCL_IDENT,
174 '(::',
175 TCL_IDENT,
176 ')*'
177 ) },
178 {
179 begin: '\\$\\{(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',
180 end: '\\}',
181 contains: [ NUMBER ]
182 }
183 ]
184 },
185 {
186 className: 'string',
187 contains: [ hljs.BACKSLASH_ESCAPE ],
188 variants: [ hljs.inherit(hljs.QUOTE_STRING_MODE, { illegal: null }) ]
189 },
190 NUMBER
191 ]
192 };
193 }
194
195 return tcl;
196
197 })();
198 ;
199 export default hljsGrammar;