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