aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Pygments/py3/pygments/lexers/automation.py
blob: 3b0f1ac364db46e1742f01032bb851b10fccdcf6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
""" 
    pygments.lexers.automation 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 
    Lexers for automation scripting languages. 
 
    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details. 
""" 
 
from pygments.lexer import RegexLexer, include, bygroups, combined 
from pygments.token import Text, Comment, Operator, Name, String, \ 
    Number, Punctuation, Generic 
 
__all__ = ['AutohotkeyLexer', 'AutoItLexer'] 
 
 
class AutohotkeyLexer(RegexLexer): 
    """ 
    For `autohotkey <http://www.autohotkey.com/>`_ source code. 
 
    .. versionadded:: 1.4 
    """ 
    name = 'autohotkey' 
    aliases = ['autohotkey', 'ahk']
    filenames = ['*.ahk', '*.ahkl'] 
    mimetypes = ['text/x-autohotkey'] 
 
    tokens = { 
        'root': [ 
            (r'^(\s*)(/\*)', bygroups(Text, Comment.Multiline), 'incomment'), 
            (r'^(\s*)(\()', bygroups(Text, Generic), 'incontinuation'), 
            (r'\s+;.*?$', Comment.Single),
            (r'^;.*?$', Comment.Single),
            (r'[]{}(),;[]', Punctuation), 
            (r'(in|is|and|or|not)\b', Operator.Word), 
            (r'\%[a-zA-Z_#@$][\w#@$]*\%', Name.Variable), 
            (r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator), 
            include('commands'), 
            include('labels'), 
            include('builtInFunctions'), 
            include('builtInVariables'), 
            (r'"', String, combined('stringescape', 'dqs')), 
            include('numbers'), 
            (r'[a-zA-Z_#@$][\w#@$]*', Name), 
            (r'\\|\'', Text), 
            (r'\`([,%`abfnrtv\-+;])', String.Escape), 
            include('garbage'), 
        ], 
        'incomment': [ 
            (r'^\s*\*/', Comment.Multiline, '#pop'), 
            (r'[^*/]', Comment.Multiline), 
            (r'[*/]', Comment.Multiline) 
        ], 
        'incontinuation': [ 
            (r'^\s*\)', Generic, '#pop'), 
            (r'[^)]', Generic), 
            (r'[)]', Generic), 
        ], 
        'commands': [ 
            (r'(?i)^(\s*)(global|local|static|' 
             r'#AllowSameLineComments|#ClipboardTimeout|#CommentFlag|' 
             r'#ErrorStdOut|#EscapeChar|#HotkeyInterval|#HotkeyModifierTimeout|' 
             r'#Hotstring|#IfWinActive|#IfWinExist|#IfWinNotActive|' 
             r'#IfWinNotExist|#IncludeAgain|#Include|#InstallKeybdHook|' 
             r'#InstallMouseHook|#KeyHistory|#LTrim|#MaxHotkeysPerInterval|' 
             r'#MaxMem|#MaxThreads|#MaxThreadsBuffer|#MaxThreadsPerHotkey|' 
             r'#NoEnv|#NoTrayIcon|#Persistent|#SingleInstance|#UseHook|' 
             r'#WinActivateForce|AutoTrim|BlockInput|Break|Click|ClipWait|' 
             r'Continue|Control|ControlClick|ControlFocus|ControlGetFocus|' 
             r'ControlGetPos|ControlGetText|ControlGet|ControlMove|ControlSend|' 
             r'ControlSendRaw|ControlSetText|CoordMode|Critical|' 
             r'DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|' 
             r'DriveSpaceFree|Edit|Else|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|' 
             r'EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|' 
             r'FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|' 
             r'FileDelete|FileGetAttrib|FileGetShortcut|FileGetSize|' 
             r'FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|' 
             r'FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|' 
             r'FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|' 
             r'FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|' 
             r'GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|' 
             r'GuiControlGet|Hotkey|IfEqual|IfExist|IfGreaterOrEqual|IfGreater|' 
             r'IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|' 
             r'IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|' 
             r'IfWinNotExist|If |ImageSearch|IniDelete|IniRead|IniWrite|' 
             r'InputBox|Input|KeyHistory|KeyWait|ListHotkeys|ListLines|' 
             r'ListVars|Loop|Menu|MouseClickDrag|MouseClick|MouseGetPos|' 
             r'MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|' 
             r'PixelSearch|PostMessage|Process|Progress|Random|RegDelete|' 
             r'RegRead|RegWrite|Reload|Repeat|Return|RunAs|RunWait|Run|' 
             r'SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|Send|' 
             r'SetBatchLines|SetCapslockState|SetControlDelay|' 
             r'SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|' 
             r'SetMouseDelay|SetNumlockState|SetScrollLockState|' 
             r'SetStoreCapslockMode|SetTimer|SetTitleMatchMode|' 
             r'SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|' 
             r'SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|' 
             r'SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|' 
             r'SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|' 
             r'StringGetPos|StringLeft|StringLen|StringLower|StringMid|' 
             r'StringReplace|StringRight|StringSplit|StringTrimLeft|' 
             r'StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|' 
             r'Transform|TrayTip|URLDownloadToFile|While|WinActivate|' 
             r'WinActivateBottom|WinClose|WinGetActiveStats|WinGetActiveTitle|' 
             r'WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinGet|WinHide|' 
             r'WinKill|WinMaximize|WinMenuSelectItem|WinMinimizeAllUndo|' 
             r'WinMinimizeAll|WinMinimize|WinMove|WinRestore|WinSetTitle|' 
             r'WinSet|WinShow|WinWaitActive|WinWaitClose|WinWaitNotActive|' 
             r'WinWait)\b', bygroups(Text, Name.Builtin)), 
        ], 
        'builtInFunctions': [ 
            (r'(?i)(Abs|ACos|Asc|ASin|ATan|Ceil|Chr|Cos|DllCall|Exp|FileExist|' 
             r'Floor|GetKeyState|IL_Add|IL_Create|IL_Destroy|InStr|IsFunc|' 
             r'IsLabel|Ln|Log|LV_Add|LV_Delete|LV_DeleteCol|LV_GetCount|' 
             r'LV_GetNext|LV_GetText|LV_Insert|LV_InsertCol|LV_Modify|' 
             r'LV_ModifyCol|LV_SetImageList|Mod|NumGet|NumPut|OnMessage|' 
             r'RegExMatch|RegExReplace|RegisterCallback|Round|SB_SetIcon|' 
             r'SB_SetParts|SB_SetText|Sin|Sqrt|StrLen|SubStr|Tan|TV_Add|' 
             r'TV_Delete|TV_GetChild|TV_GetCount|TV_GetNext|TV_Get|' 
             r'TV_GetParent|TV_GetPrev|TV_GetSelection|TV_GetText|TV_Modify|' 
             r'VarSetCapacity|WinActive|WinExist|Object|ComObjActive|' 
             r'ComObjArray|ComObjEnwrap|ComObjUnwrap|ComObjParameter|' 
             r'ComObjType|ComObjConnect|ComObjCreate|ComObjGet|ComObjError|' 
             r'ComObjValue|Insert|MinIndex|MaxIndex|Remove|SetCapacity|' 
             r'GetCapacity|GetAddress|_NewEnum|FileOpen|Read|Write|ReadLine|' 
             r'WriteLine|ReadNumType|WriteNumType|RawRead|RawWrite|Seek|Tell|' 
             r'Close|Next|IsObject|StrPut|StrGet|Trim|LTrim|RTrim)\b', 
             Name.Function), 
        ], 
        'builtInVariables': [ 
            (r'(?i)(A_AhkPath|A_AhkVersion|A_AppData|A_AppDataCommon|' 
             r'A_AutoTrim|A_BatchLines|A_CaretX|A_CaretY|A_ComputerName|' 
             r'A_ControlDelay|A_Cursor|A_DDDD|A_DDD|A_DD|A_DefaultMouseSpeed|' 
             r'A_Desktop|A_DesktopCommon|A_DetectHiddenText|' 
             r'A_DetectHiddenWindows|A_EndChar|A_EventInfo|A_ExitReason|' 
             r'A_FormatFloat|A_FormatInteger|A_Gui|A_GuiEvent|A_GuiControl|' 
             r'A_GuiControlEvent|A_GuiHeight|A_GuiWidth|A_GuiX|A_GuiY|A_Hour|' 
             r'A_IconFile|A_IconHidden|A_IconNumber|A_IconTip|A_Index|' 
             r'A_IPAddress1|A_IPAddress2|A_IPAddress3|A_IPAddress4|A_ISAdmin|' 
             r'A_IsCompiled|A_IsCritical|A_IsPaused|A_IsSuspended|A_KeyDelay|' 
             r'A_Language|A_LastError|A_LineFile|A_LineNumber|A_LoopField|' 
             r'A_LoopFileAttrib|A_LoopFileDir|A_LoopFileExt|A_LoopFileFullPath|' 
             r'A_LoopFileLongPath|A_LoopFileName|A_LoopFileShortName|' 
             r'A_LoopFileShortPath|A_LoopFileSize|A_LoopFileSizeKB|' 
             r'A_LoopFileSizeMB|A_LoopFileTimeAccessed|A_LoopFileTimeCreated|' 
             r'A_LoopFileTimeModified|A_LoopReadLine|A_LoopRegKey|' 
             r'A_LoopRegName|A_LoopRegSubkey|A_LoopRegTimeModified|' 
             r'A_LoopRegType|A_MDAY|A_Min|A_MM|A_MMM|A_MMMM|A_Mon|A_MouseDelay|' 
             r'A_MSec|A_MyDocuments|A_Now|A_NowUTC|A_NumBatchLines|A_OSType|' 
             r'A_OSVersion|A_PriorHotkey|A_ProgramFiles|A_Programs|' 
             r'A_ProgramsCommon|A_ScreenHeight|A_ScreenWidth|A_ScriptDir|' 
             r'A_ScriptFullPath|A_ScriptName|A_Sec|A_Space|A_StartMenu|' 
             r'A_StartMenuCommon|A_Startup|A_StartupCommon|A_StringCaseSense|' 
             r'A_Tab|A_Temp|A_ThisFunc|A_ThisHotkey|A_ThisLabel|A_ThisMenu|' 
             r'A_ThisMenuItem|A_ThisMenuItemPos|A_TickCount|A_TimeIdle|' 
             r'A_TimeIdlePhysical|A_TimeSincePriorHotkey|A_TimeSinceThisHotkey|' 
             r'A_TitleMatchMode|A_TitleMatchModeSpeed|A_UserName|A_WDay|' 
             r'A_WinDelay|A_WinDir|A_WorkingDir|A_YDay|A_YEAR|A_YWeek|A_YYYY|' 
             r'Clipboard|ClipboardAll|ComSpec|ErrorLevel|ProgramFiles|True|' 
             r'False|A_IsUnicode|A_FileEncoding|A_OSVersion|A_PtrSize)\b', 
             Name.Variable), 
        ], 
        'labels': [ 
            # hotkeys and labels 
            # technically, hotkey names are limited to named keys and buttons 
            (r'(^\s*)([^:\s("]+?:{1,2})', bygroups(Text, Name.Label)), 
            (r'(^\s*)(::[^:\s]+?::)', bygroups(Text, Name.Label)), 
        ], 
        'numbers': [ 
            (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float), 
            (r'\d+[eE][+-]?[0-9]+', Number.Float), 
            (r'0\d+', Number.Oct), 
            (r'0[xX][a-fA-F0-9]+', Number.Hex), 
            (r'\d+L', Number.Integer.Long), 
            (r'\d+', Number.Integer) 
        ], 
        'stringescape': [ 
            (r'\"\"|\`([,%`abfnrtv])', String.Escape), 
        ], 
        'strings': [ 
            (r'[^"\n]+', String), 
        ], 
        'dqs': [ 
            (r'"', String, '#pop'), 
            include('strings') 
        ], 
        'garbage': [ 
            (r'[^\S\n]', Text), 
            # (r'.', Text),      # no cheating 
        ], 
    } 
 
 
class AutoItLexer(RegexLexer): 
    """ 
    For `AutoIt <http://www.autoitscript.com/site/autoit/>`_ files. 
 
    AutoIt is a freeware BASIC-like scripting language 
    designed for automating the Windows GUI and general scripting 
 
    .. versionadded:: 1.6 
    """ 
    name = 'AutoIt' 
    aliases = ['autoit'] 
    filenames = ['*.au3'] 
    mimetypes = ['text/x-autoit'] 
 
    # Keywords, functions, macros from au3.keywords.properties 
    # which can be found in AutoIt installed directory, e.g. 
    # c:\Program Files (x86)\AutoIt3\SciTE\au3.keywords.properties 
 
    keywords = """\ 
    #include-once #include #endregion #forcedef #forceref #region 
    and byref case continueloop dim do else elseif endfunc endif 
    endselect exit exitloop for func global 
    if local next not or return select step 
    then to until wend while exit""".split() 
 
    functions = """\ 
    abs acos adlibregister adlibunregister asc ascw asin assign atan 
    autoitsetoption autoitwingettitle autoitwinsettitle beep binary binarylen 
    binarymid binarytostring bitand bitnot bitor bitrotate bitshift bitxor 
    blockinput break call cdtray ceiling chr chrw clipget clipput consoleread 
    consolewrite consolewriteerror controlclick controlcommand controldisable 
    controlenable controlfocus controlgetfocus controlgethandle controlgetpos 
    controlgettext controlhide controllistview controlmove controlsend 
    controlsettext controlshow controltreeview cos dec dircopy dircreate 
    dirgetsize dirmove dirremove dllcall dllcalladdress dllcallbackfree 
    dllcallbackgetptr dllcallbackregister dllclose dllopen dllstructcreate 
    dllstructgetdata dllstructgetptr dllstructgetsize dllstructsetdata 
    drivegetdrive drivegetfilesystem drivegetlabel drivegetserial drivegettype 
    drivemapadd drivemapdel drivemapget drivesetlabel drivespacefree 
    drivespacetotal drivestatus envget envset envupdate eval execute exp 
    filechangedir fileclose filecopy filecreatentfslink filecreateshortcut 
    filedelete fileexists filefindfirstfile filefindnextfile fileflush 
    filegetattrib filegetencoding filegetlongname filegetpos filegetshortcut 
    filegetshortname filegetsize filegettime filegetversion fileinstall filemove 
    fileopen fileopendialog fileread filereadline filerecycle filerecycleempty 
    filesavedialog fileselectfolder filesetattrib filesetpos filesettime 
    filewrite filewriteline floor ftpsetproxy guicreate guictrlcreateavi 
    guictrlcreatebutton guictrlcreatecheckbox guictrlcreatecombo 
    guictrlcreatecontextmenu guictrlcreatedate guictrlcreatedummy 
    guictrlcreateedit guictrlcreategraphic guictrlcreategroup guictrlcreateicon 
    guictrlcreateinput guictrlcreatelabel guictrlcreatelist 
    guictrlcreatelistview guictrlcreatelistviewitem guictrlcreatemenu 
    guictrlcreatemenuitem guictrlcreatemonthcal guictrlcreateobj 
    guictrlcreatepic guictrlcreateprogress guictrlcreateradio 
    guictrlcreateslider guictrlcreatetab guictrlcreatetabitem 
    guictrlcreatetreeview guictrlcreatetreeviewitem guictrlcreateupdown 
    guictrldelete guictrlgethandle guictrlgetstate guictrlread guictrlrecvmsg 
    guictrlregisterlistviewsort guictrlsendmsg guictrlsendtodummy 
    guictrlsetbkcolor guictrlsetcolor guictrlsetcursor guictrlsetdata 
    guictrlsetdefbkcolor guictrlsetdefcolor guictrlsetfont guictrlsetgraphic 
    guictrlsetimage guictrlsetlimit guictrlsetonevent guictrlsetpos 
    guictrlsetresizing guictrlsetstate guictrlsetstyle guictrlsettip guidelete 
    guigetcursorinfo guigetmsg guigetstyle guiregistermsg guisetaccelerators 
    guisetbkcolor guisetcoord guisetcursor guisetfont guisethelp guiseticon 
    guisetonevent guisetstate guisetstyle guistartgroup guiswitch hex hotkeyset 
    httpsetproxy httpsetuseragent hwnd inetclose inetget inetgetinfo inetgetsize 
    inetread inidelete iniread inireadsection inireadsectionnames 
    inirenamesection iniwrite iniwritesection inputbox int isadmin isarray 
    isbinary isbool isdeclared isdllstruct isfloat ishwnd isint iskeyword 
    isnumber isobj isptr isstring log memgetstats mod mouseclick mouseclickdrag 
    mousedown mousegetcursor mousegetpos mousemove mouseup mousewheel msgbox 
    number objcreate objcreateinterface objevent objevent objget objname 
    onautoitexitregister onautoitexitunregister opt ping pixelchecksum 
    pixelgetcolor pixelsearch pluginclose pluginopen processclose processexists 
    processgetstats processlist processsetpriority processwait processwaitclose 
    progressoff progresson progressset ptr random regdelete regenumkey 
    regenumval regread regwrite round run runas runaswait runwait send 
    sendkeepactive seterror setextended shellexecute shellexecutewait shutdown 
    sin sleep soundplay soundsetwavevolume splashimageon splashoff splashtexton 
    sqrt srandom statusbargettext stderrread stdinwrite stdioclose stdoutread 
    string stringaddcr stringcompare stringformat stringfromasciiarray 
    stringinstr stringisalnum stringisalpha stringisascii stringisdigit 
    stringisfloat stringisint stringislower stringisspace stringisupper 
    stringisxdigit stringleft stringlen stringlower stringmid stringregexp 
    stringregexpreplace stringreplace stringright stringsplit stringstripcr 
    stringstripws stringtoasciiarray stringtobinary stringtrimleft 
    stringtrimright stringupper tan tcpaccept tcpclosesocket tcpconnect 
    tcplisten tcpnametoip tcprecv tcpsend tcpshutdown tcpstartup timerdiff 
    timerinit tooltip traycreateitem traycreatemenu traygetmsg trayitemdelete 
    trayitemgethandle trayitemgetstate trayitemgettext trayitemsetonevent 
    trayitemsetstate trayitemsettext traysetclick trayseticon traysetonevent 
    traysetpauseicon traysetstate traysettooltip traytip ubound udpbind 
    udpclosesocket udpopen udprecv udpsend udpshutdown udpstartup vargettype 
    winactivate winactive winclose winexists winflash wingetcaretpos 
    wingetclasslist wingetclientsize wingethandle wingetpos wingetprocess 
    wingetstate wingettext wingettitle winkill winlist winmenuselectitem 
    winminimizeall winminimizeallundo winmove winsetontop winsetstate 
    winsettitle winsettrans winwait winwaitactive winwaitclose 
    winwaitnotactive""".split() 
 
    macros = """\ 
    @appdatacommondir @appdatadir @autoitexe @autoitpid @autoitversion 
    @autoitx64 @com_eventobj @commonfilesdir @compiled @computername @comspec 
    @cpuarch @cr @crlf @desktopcommondir @desktopdepth @desktopdir 
    @desktopheight @desktoprefresh @desktopwidth @documentscommondir @error 
    @exitcode @exitmethod @extended @favoritescommondir @favoritesdir 
    @gui_ctrlhandle @gui_ctrlid @gui_dragfile @gui_dragid @gui_dropid 
    @gui_winhandle @homedrive @homepath @homeshare @hotkeypressed @hour 
    @ipaddress1 @ipaddress2 @ipaddress3 @ipaddress4 @kblayout @lf 
    @logondnsdomain @logondomain @logonserver @mday @min @mon @msec @muilang 
    @mydocumentsdir @numparams @osarch @osbuild @oslang @osservicepack @ostype 
    @osversion @programfilesdir @programscommondir @programsdir @scriptdir 
    @scriptfullpath @scriptlinenumber @scriptname @sec @startmenucommondir 
    @startmenudir @startupcommondir @startupdir @sw_disable @sw_enable @sw_hide 
    @sw_lock @sw_maximize @sw_minimize @sw_restore @sw_show @sw_showdefault 
    @sw_showmaximized @sw_showminimized @sw_showminnoactive @sw_showna 
    @sw_shownoactivate @sw_shownormal @sw_unlock @systemdir @tab @tempdir 
    @tray_id @trayiconflashing @trayiconvisible @username @userprofiledir @wday 
    @windowsdir @workingdir @yday @year""".split() 
 
    tokens = { 
        'root': [ 
            (r';.*\n', Comment.Single), 
            (r'(#comments-start|#cs)(.|\n)*?(#comments-end|#ce)', 
             Comment.Multiline), 
            (r'[\[\]{}(),;]', Punctuation), 
            (r'(and|or|not)\b', Operator.Word), 
            (r'[$|@][a-zA-Z_]\w*', Name.Variable), 
            (r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator), 
            include('commands'), 
            include('labels'), 
            include('builtInFunctions'), 
            include('builtInMarcros'), 
            (r'"', String, combined('stringescape', 'dqs')), 
            (r"'", String, 'sqs'),
            include('numbers'), 
            (r'[a-zA-Z_#@$][\w#@$]*', Name), 
            (r'\\|\'', Text), 
            (r'\`([,%`abfnrtv\-+;])', String.Escape), 
            (r'_\n', Text),  # Line continuation 
            include('garbage'), 
        ], 
        'commands': [ 
            (r'(?i)(\s*)(%s)\b' % '|'.join(keywords), 
             bygroups(Text, Name.Builtin)), 
        ], 
        'builtInFunctions': [ 
            (r'(?i)(%s)\b' % '|'.join(functions), 
             Name.Function), 
        ], 
        'builtInMarcros': [ 
            (r'(?i)(%s)\b' % '|'.join(macros), 
             Name.Variable.Global), 
        ], 
        'labels': [ 
            # sendkeys 
            (r'(^\s*)(\{\S+?\})', bygroups(Text, Name.Label)), 
        ], 
        'numbers': [ 
            (r'(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?', Number.Float), 
            (r'\d+[eE][+-]?[0-9]+', Number.Float), 
            (r'0\d+', Number.Oct), 
            (r'0[xX][a-fA-F0-9]+', Number.Hex), 
            (r'\d+L', Number.Integer.Long), 
            (r'\d+', Number.Integer) 
        ], 
        'stringescape': [ 
            (r'\"\"|\`([,%`abfnrtv])', String.Escape), 
        ], 
        'strings': [ 
            (r'[^"\n]+', String), 
        ], 
        'dqs': [ 
            (r'"', String, '#pop'), 
            include('strings') 
        ], 
        'sqs': [
            (r'\'\'|\`([,%`abfnrtv])', String.Escape),
            (r"'", String, '#pop'),
            (r"[^'\n]+", String)
        ],
        'garbage': [ 
            (r'[^\S\n]', Text), 
        ], 
    }