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