From 519b7328b66c4c84f03893a31e4be5ba6b1395f2 Mon Sep 17 00:00:00 2001 From: mitchell Date: Sun, 11 Mar 2018 23:04:41 -0400 Subject: Added optional Lua lexer support. This support is disabled by default and must be enabled via compile-time option. --- lexlua/autoit.lua | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 lexlua/autoit.lua (limited to 'lexlua/autoit.lua') diff --git a/lexlua/autoit.lua b/lexlua/autoit.lua new file mode 100644 index 000000000..68121bb69 --- /dev/null +++ b/lexlua/autoit.lua @@ -0,0 +1,132 @@ +-- Copyright 2006-2018 Mitchell mitchell.att.foicica.com. See License.txt. +-- AutoIt LPeg lexer. +-- Contributed by Jeff Stone. + +local lexer = require('lexer') +local token, word_match = lexer.token, lexer.word_match +local P, R, S = lpeg.P, lpeg.R, lpeg.S + +local lex = lexer.new('autoit') + +-- Whitespace. +lex:add_rule('whitespace', token(lexer.WHITESPACE, lexer.space^1)) + +-- Keywords. +lex:add_rule('keyword', token(lexer.KEYWORD, word_match([[ + False True And Or Not ContinueCase ContinueLoop Default Dim Global Local Const + Do Until Enum Exit ExitLoop For To Step Next In Func Return EndFunc If Then + ElseIf Else EndIf Null ReDim Select Case EndSelect Static Switch EndSwitch + Volatile While WEnd With EndWith +]], true))) + +-- Functions. +lex:add_rule('function', token(lexer.FUNCTION, word_match([[ + 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 FileReadToArray FileRecycle + FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd + FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName + 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 IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj + IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown + MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number + ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister + OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch + 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 StringReverse 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 +]], true))) + +-- Identifiers. +lex:add_rule('identifier', token(lexer.IDENTIFIER, lexer.word)) + +-- Comments. +local line_comment = ';' * lexer.nonnewline_esc^0 +local block_comment1 = '#comments-start' * (lexer.any - '#comments-end')^0 * + P('#comments-end')^-1 +local block_comment2 = '#cs' * (lexer.any - '#ce')^0 * P('#ce')^-1 +lex:add_rule('comment', token(lexer.COMMENT, line_comment + block_comment1 + + block_comment2)) + +-- Preprocessor. +lex:add_rule('preprocessor', token(lexer.PREPROCESSOR, '#' * word_match([[ + include-once include pragma forceref RequireAdmin NoTrayIcon + OnAutoItStartRegister +]], true))) + +-- Strings. +local dq_str = lexer.delimited_range('"', true, true) +local sq_str = lexer.delimited_range("'", true, true) +local inc = lexer.delimited_range('<>', true, true, true) +lex:add_rule('string', token(lexer.STRING, dq_str + sq_str + inc)) + +-- Macros. +lex:add_rule('macro', token('macro', '@' * (lexer.alnum + '_')^1)) +lex:add_style('macro', lexer.STYLE_PREPROCESSOR) + +-- Variables. +lex:add_rule('variable', token(lexer.VARIABLE, '$' * (lexer.alnum + '_')^1)) + +-- Numbers. +lex:add_rule('number', token(lexer.NUMBER, lexer.float + lexer.integer)) + +-- Operators. +lex:add_rule('operator', token(lexer.OPERATOR, S('+-^*/&<>=?:()[]'))) + +return lex -- cgit v1.2.3