############################################################################### # Name: flagship.py # # Purpose: Define Flagship syntax for highlighting and other features # # Author: Cody Precord # # Copyright: (c) 2007 Cody Precord # # License: wxWindows License # ############################################################################### """ FILE: flagship.py AUTHOR: Cody Precord @summary: Lexer configuration module for the Flagship programming language and other XBase dialects. @todo: Custom style defs """ __author__ = "Cody Precord " __svnid__ = "$Id: _flagship.py 68798 2011-08-20 17:17:05Z CJP $" __revision__ = "$Revision: 68798 $" #-----------------------------------------------------------------------------# # Imports import wx.stc as stc # Local Imports import synglob import syndata #-----------------------------------------------------------------------------# #---- Keyword Definitions ----# FS_COMMANDS = (0, "? @ accept access all alternate announce ansi any append as " "assign autolock average begin bell bitmap blank box call " "cancel case century charset checkbox clear close cls color " "combobox commit confirm console constant continue copy " "count create cursor date dbread dbwrite decimals declare " "default delete deleted delimiters device dir directory " "display do draw edit else elseif eject end endcase enddo " "endif endtext epoch erase error escape eval eventmask exact " "exclusive extended external extra field file filter find " "fixed font for form format from get gets global " "global_extern go goto gotop guialign guicolor guicursor " "guitransl html htmltext if image index input intensity join " "key keyboard keytransl label lines list listbox local " "locate margin memory memvar menu message method multibyte " "multilocks next nfs nfslock nfs_force note on openerror " "order outmode pack parameters path pixel pop printer " "private prompt public push pushbutton quit radiobutton " "radiogroup read recall refresh reindex relation release " "rename replace report request restore richtext rowadapt " "rowalign run save say scoreboard scrcompress screen seek " "select sequence set setenhanced setstandard setunselected " "skip softseek sort source static store struct structure sum " "tag tbrowse text to total type typeahead unique unlock " "update use wait while with wrap xml zap zerobyteout") FS_STDLIB = (1, "_displarr _displarrerr _displarrstd _displobj _displobjerr " "_displobjstd aadd abs achoice aclone acopy adel adir " "aelemtype aeval afields afill ains alert alias alltrim altd " "ansi2oem appiomode appmdimode appobject array asc ascan asize " "asort at atail atanychar autoxlock between bin2i bin2l bin2w " "binand binlshift binor binrshift binxor bof break browse cdow " "chr chr2screen cmonth col col2pixel color2rgb colorselect " "colvisible consoleopen consolesize crc32 ctod curdir date " "datevalid day dbappend dbclearfilter dbclearindex " "dbclearrelation dbcloseall dbclosearea dbcommit dbcommitall " "dbcreate dbcreateindex dbdelete dbedit dbeval dbf dbfilter " "dbfinfo dbflock dbfused dbgetlocate dbgobottom dbgoto dbgotop " "dbobject dbrecall dbreindex dbrelation dbrlock dbrlocklist " "dbrselect dbrunlock dbseek dbselectarea dbsetdriver " "dbsetfilter dbsetindex dbsetlocate dbsetorder dbsetrelation " "dbskip dbstruct dbunlock dbunlockall dbusearea default " "deleted descend devout devoutpict devpos directory diskspace " "dispbegin dispbox dispcount dispend dispout doserror " "doserror2str dow drawline dtoc dtos empty eof errorblock " "errorlevel eval execname execpidnum exp fattrib fclose fcount " "fcreate ferase ferror ferror2str fieldblock fielddeci " "fieldget fieldgetarr fieldlen fieldname fieldpos fieldput " "fieldputarr fieldtype fieldwblock file findexefile fklabel " "fkmax flagship_dir flock flockf fopen found fread freadstdin " "freadstr freadtxt frename fs_set fseek fwrite getactive " "getalign getapplykey getdosetkey getenv getenvarr getfunction " "getpostvalid getprevalid getreader guidrawline hardcr header " "hex2num i2bin iif indexcheck indexcount indexdbf indexext " "indexkey indexnames indexord infobox inkey inkey2read " "inkey2str inkeytrap instdchar instdstring int int2num isalpha " "isbegseq iscolor isdbexcl isdbflock isdbmultip isdbmultiple " "isdbmultipleopen isdbrlock isdigit isfunction isguimode " "islower isobjclass isobjequiv isobjproperty isprinter isupper " "l2bin lastkey lastrec left len listbox lock log lower ltrim " "lupdate macroeval macrosubst max max_col max_row maxcol " "maxrow mcol mdblck mdiclose mdiopen mdiselect memocode " "memodecode memoedit memoencode memoline memoread memory " "memotran memowrit memvarblock mhide min minmax mlcount " "mlctopos mleftdown mlpos mod month mpostolc mpresent " "mreststate mrightdown mrow msavestate msetcursor msetpos " "mshow mstate neterr netname nextkey num2hex num2int objclone " "oem2ansi onkey ordbagext ordbagname ordcond ordcondset " "ordcreate orddescend orddestroy ordfor ordisinique ordkey " "ordkeyadd ordkeycount ordkeydel ordkeygoto ordkeyno ordkeyval " "ordlistadd ordlistclear ordlistrebui ordname ordnumber " "ordscope ordsetfocu ordsetrelat ordskipunique os outerr " "outstd padc padl padr param parameters pcalls pcol pcount " "pixel2col pixel2row printstatus procfile procline procname " "procstack proper prow qout qout2 qqout qqout2 rat rddlist " "rddname rddsetdefault readexit readinsert readkey readkill " "readmodal readsave readupdated readvar reccount recno recsize " "replicate restscreen right rlock rlockverify round row " "row2pixel rowadapt rowvisible rtrim savescreen scrdos2unix " "screen2chr scroll scrunix2dos seconds secondscpu select " "serial set setansi setblink setcancel setcol2get setcolor " "setcolorba setcursor setevent setguicursor setkey setmode " "setpos setprc setvarempty sleep sleepms soundex space sqrt " "statbarmsg statusmessage stod str strlen strlen2col " "strlen2pix strlen2space strpeek strpoke strtran strzero stuff " "substr tbcolumnnew tbmouse tbrowsearr tbrowsedb tbrowsenew " "tempfilename time tone transform trim truepath type updated " "upper used usersactive usersdbf usersmax val valtype version " "webdate weberrorhandler webgetenvir webgetformdata " "webhtmlbegin webhtmlend weblogerr webmaildomain weboutdata " "websendmail word year") FS_FUNC = (2, "function procedure return exit") FS_CLASS = (3, "class instance export hidden protect prototype") #---- End Keyword Definitions ----# #---- Syntax Style Specs ----# SYNTAX_ITEMS = [(stc.STC_FS_ASM, ''), (stc.STC_FS_BINNUMBER, 'number_style'), (stc.STC_FS_COMMENT, 'comment_style'), (stc.STC_FS_COMMENTDOC, 'dockey_style'), (stc.STC_FS_COMMENTDOCKEYWORD, 'dockey_style'), (stc.STC_FS_COMMENTDOCKEYWORDERROR, 'error_style'), (stc.STC_FS_COMMENTLINE, 'comment_style'), (stc.STC_FS_COMMENTLINEDOC, 'comment_style'), (stc.STC_FS_CONSTANT, 'default_style'), (stc.STC_FS_DATE, 'default_style'), (stc.STC_FS_DEFAULT, 'default_style'), (stc.STC_FS_ERROR, 'error_style'), (stc.STC_FS_HEXNUMBER, 'number_style'), (stc.STC_FS_IDENTIFIER, 'default_style'), (stc.STC_FS_KEYWORD, 'keyword_style'), (stc.STC_FS_KEYWORD2, 'keyword2_style'), (stc.STC_FS_KEYWORD3, 'keyword3_style'), (stc.STC_FS_KEYWORD4, 'keyword4_style'), (stc.STC_FS_LABEL, 'default_style'), (stc.STC_FS_NUMBER, 'number_style'), (stc.STC_FS_OPERATOR, 'operator_style'), (stc.STC_FS_PREPROCESSOR, 'pre_style'), (stc.STC_FS_STRING, 'string_style'), (stc.STC_FS_STRINGEOL, 'stringeol_style')] #---- Extra Properties ----# FOLD = ('fold', '1') #-----------------------------------------------------------------------------# class SyntaxData(syndata.SyntaxDataBase): """SyntaxData object for Flagship""" def __init__(self, langid): super(SyntaxData, self).__init__(langid) # Setup self.SetLexer(stc.STC_LEX_FLAGSHIP) def GetKeywords(self): """Returns Specified Keywords List """ return [FS_COMMANDS, FS_STDLIB, FS_FUNC, FS_CLASS] def GetSyntaxSpec(self): """Syntax Specifications """ return SYNTAX_ITEMS def GetProperties(self): """Returns a list of Extra Properties to set """ return [FOLD] def GetCommentPattern(self): """Returns a list of characters used to comment a block of code """ return [u'//']