diff options
Diffstat (limited to 'pygments')
-rw-r--r-- | pygments/lexers/_mapping.py | 3 | ||||
-rw-r--r-- | pygments/lexers/other.py | 165 |
2 files changed, 166 insertions, 2 deletions
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 0eca2682..9e435330 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -31,6 +31,7 @@ LEXERS = { 'AppleScriptLexer': ('pygments.lexers.other', 'AppleScript', ('applescript',), ('*.applescript',), ()), 'AspectJLexer': ('pygments.lexers.jvm', 'AspectJ', ('aspectj',), ('*.aj',), ('text/x-aspectj',)), 'AsymptoteLexer': ('pygments.lexers.other', 'Asymptote', ('asy', 'asymptote'), ('*.asy',), ('text/x-asymptote',)), + 'AutoItLexer': ('pygments.lexers.other', 'AutoIt', ('autoit', 'Autoit'), ('*.au3',), ('text/x-autoit',)), 'AutohotkeyLexer': ('pygments.lexers.other', 'autohotkey', ('ahk',), ('*.ahk', '*.ahkl'), ('text/x-autohotkey',)), 'AwkLexer': ('pygments.lexers.other', 'Awk', ('awk', 'gawk', 'mawk', 'nawk'), ('*.awk',), ('application/x-awk',)), 'BBCodeLexer': ('pygments.lexers.text', 'BBCode', ('bbcode',), (), ('text/x-bbcode',)), @@ -309,7 +310,7 @@ if __name__ == '__main__': footer = content[content.find("if __name__ == '__main__':"):] # write new file - f = open(__file__, 'w') + f = open(__file__, 'wb') f.write(header) f.write('LEXERS = {\n %s,\n}\n\n' % ',\n '.join(found_lexers)) f.write(footer) diff --git a/pygments/lexers/other.py b/pygments/lexers/other.py index 8dfb3145..8baf8d94 100644 --- a/pygments/lexers/other.py +++ b/pygments/lexers/other.py @@ -32,7 +32,8 @@ __all__ = ['BrainfuckLexer', 'BefungeLexer', 'RedcodeLexer', 'MOOCodeLexer', 'AutohotkeyLexer', 'GoodDataCLLexer', 'MaqlLexer', 'ProtoBufLexer', 'HybrisLexer', 'AwkLexer', 'Cfengine3Lexer', 'SnobolLexer', 'ECLLexer', 'UrbiscriptLexer', 'OpenEdgeLexer', 'BroLexer', - 'MscgenLexer', 'KconfigLexer', 'VGLLexer', 'SourcePawnLexer'] + 'MscgenLexer', 'KconfigLexer', 'VGLLexer', 'SourcePawnLexer', + 'AutoItLexer'] class ECLLexer(RegexLexer): @@ -3158,3 +3159,165 @@ class SourcePawnLexer(RegexLexer): elif value in self._functions: tokens = Name.Builtin yield index, token, value + +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 + + *New in Pygments 1.6.* + """ + name = 'AutoIt' + aliases = ['autoit', '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).*?(#comments-end|#ce)', Comment.Multiline), + (r'[\[\]{}(),;]', Punctuation), + (r'(and|or|not)\b', Operator.Word), + (r'[\$|@][a-zA-Z_][a-zA-Z0-9_]*', Name.Variable), + (r'!=|==|:=|\.=|<<|>>|[-~+/*%=<>&^|?:!.]', Operator), + include('commands'), + include('labels'), + include('builtInFunctions'), + include('builtInMarcros'), + (r'"', String, combined('stringescape', 'dqs')), + include('numbers'), + (r'[a-zA-Z_#@$][a-zA-Z0-9_#@$]*', 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') + ], + 'garbage': [ + (r'[^\S\n]', Text), + ], + } |