|
|
|
"""
|
|
|
|
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),
|
|
|
|
],
|
|
|
|
}
|