_masm.py :  » GUI » wxPython » wxPython-src-2.8.11.0 » wxPython » wx » tools » Editra » src » syntax » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » GUI » wxPython 
wxPython » wxPython src 2.8.11.0 » wxPython » wx » tools » Editra » src » syntax » _masm.py
###############################################################################
# Name: masm.py                                                               #
# Purpose: Define MASM syntax for highlighting and other features             #
# Author: Cody Precord <cprecord@editra.org>                                  #
# Copyright: (c) 2007 Cody Precord <staff@editra.org>                         #
# License: wxWindows License                                                  #
###############################################################################

"""
FILE: masm.py
AUTHOR: Cody Precord
@summary: Lexer configuration file Microsoft Assembly Code

"""

__author__ = "Cody Precord <cprecord@editra.org>"
__svnid__ = "$Id: _masm.py 63834 2010-04-03 06:04:33Z CJP $"
__revision__ = "$Revision: 63834 $"

#-----------------------------------------------------------------------------#
# Imports
import wx.stc as stc

# Local Imports
import syndata

#-----------------------------------------------------------------------------#

#---- Keyword Definitions ----#

# MASM CPU Instructions/Operators
MASM_CPU_INST = (0, "aaa aad aam aas adc and arpl bound bsf bsr bswap bt btc "
                    "btr bts call cdw cdq clc cld cli clts cmc cmp cmps cmpsb "
                    "cmpsw cmpsd cmpxchng cwd cwde daa das enter in ins insb "
                    "insw insd int into invd invlpg iret iretd ja jae jb jbe "
                    "jc jcxz jecxz je jz jg jge jl jle jna jnae jnb jnbe jnc "
                    "jne jng jnge jnl jnle jno jnp jns jnz jo jp jpe jpo js jz "
                    "jmp lahf lar lea leave lgdt lidt lgs lss lfs lods lodsb "
                    "lodsw lodsd loop loope loopz loone loopne retf retn lds "
                    "les lldt lmsw lock lsl ltr mov movs movsb movsw movsd "
                    "movsx movzx neg nop not or out outs outsb outsw outsd "
                    "pop popa popd popf popfd push pusha pushad pushf pushfd "
                    "rcl rcr rol roro rep repe repz repne repnz ret sahf sal "
                    "sar shl shr sbb scas scasb scasw scasd seta setae setb "
                    "setbe setc sete setg setge setl setle setna setnae setnb "
                    "setnbe setnc setne setng setnge setnl setnle setno setnp "
                    "setns setnz seto setp setpe setpo ses setz sgdt sidt shld "
                    "shrd sldt smsw stc std sti stos stosb stosw stosd str "
                    "test verr verw wait wbinvd xchg xlat xlatb xor add dec "
                    "idiv imul inc mul sub xadd div "
                    # MMX/SSE/SSE2 Instructions
                    "cflush cpuid emms femms cmovo cmovno cmovb cmovc cmovnae "
                    "cmovae cmovnb cmovnc cmove cmovz cmovne cmovnz cmovbe "
                    "cmovna cmova cmovnbe cmovs cmovns cmovp cmovpe cmovnp "
                    "cmovpo cmovl cmovnge cmovge cmovnl cmovle cmovng cmovg "
                    "cmovnle cmpxchg486 cmpxchg8b loadall loadall286 ibts "
                    "icebp int1 int3 int01 int03 iretw popaw popfw pushaw "
                    "pushfw rdmsr rdpmc rdshr rdtsc rsdc rsldt rsm rsts salc "
                    "smi smint smintold svdc svldt svts syscall sysenter "
                    "sysexit sysret ud0 ud1 ud2 umov xbts wrmsr wrshr")

# floating point instructions
MASM_FPU_INST = (1, "f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcom fcomp "
                    "fcompp fdecstp fdisi fdiv fdivp fdivr fdivrp feni ffree "
                    "fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit "
                    "fist fistp fisub fisubr fld fld1 fldcw fldenv fldenvw "
                    "fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex "
                    "fndisi fneni fninit fnop fnsave fnsavew fnstcw fnstenv "
                    "fnstenvw fnstsw fpatan fprem fptan frndint frstor frstorw "
                    "fsave fsavew fscale fsqrt fst fstcw fstenv fstenvw fstp "
                    "fstsw fsub fsubp fsubr fsubrp ftst fwait fxam fxch "
                    "fxtract fyl2x fyl2xp1 fsetpm fcos fldenvd fnsaved "
                    "fnstenvd fprem1 frstord fsaved fsin fsincos fstenvd fucom "
                    "fucomp fucompp fcomi fcomip ffreep fcmovb fcmove fcmovbe "
                    "fcmovu fcmovnb fcmovne fcmovnbe fcmovnu ")

MASM_REGISTERS = (2, "ah al ax bh bl bp bx ch cl cr0 cr2 cr3 cr4 cs cx dh di "
                     "dl dr0 dr1 dr2 dr3 dr6 dr7 ds dx eax ebp ebx ecx edi edx "
                     "es esi esp fs gs si sp ss st tr3 tr4 tr5 tr6 tr7 st0 st1 "
                     "st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 "
                     "xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7")

MASM_DIRECTIVES = (3, ".186 .286 .286c .286p .287 .386 .386c .386p .387 .486 "
                      ".486p .8086 .8087 .alpha .break .code .const .continue "
                      ".cref .data .data? .dosseg .else .elseif .endif .endw "
                      ".err .err1 .err2 .errb .errdef .errdif .errdifi .erre "
                      ".erridn .erridni .errnb .errndef .errnz .exit .fardata "
                      ".fardata? .if .lall .lfcond .list .listall .listif "
                      ".listmacro .listmacroall  .model .no87 .nocref .nolist "
                      ".nolistif .nolistmacro .radix .repeat .sall .seq "
                      ".sfcond .stack .startup .tfcond .type .until .untilcxz "
                      ".while .xall .xcref .xlist alias align assume catstr "
                      "comm comment db dd df dosseg dq dt dup dw echo else "
                      "elseif elseif1 elseif2 elseifb elseifdef elseifdif "
                      "elseifdifi elseife elseifidn elseifidni elseifnb "
                      "elseifndef end endif endm endp ends eq equ even exitm "
                      "extern externdef extrn for forc ge goto group gt high "
                      "highword if if1 if2 ifb ifdef ifdif ifdifi ife ifidn "
                      "ifidni ifnb ifndef include includelib instr invoke irp "
                      "irpc label le length lengthof local low lowword "
                      "lroffset lt macro mask mod .msfloat name ne offset "
                      "opattr option org %out page popcontext proc proto ptr "
                      "public purge pushcontext record repeat rept seg segment "
                      "short size sizeof sizestr struc struct substr subtitle "
                      "subttl textequ this title type typedef union while "
                      "width")

MASM_DIREC_OP = (4, "$ ? @b @f addr basic byte c carry? dword far far16 "
                    "fortran fword near near16 overflow? parity? pascal qword "
                    "real4 real8 real10 sbyte sdword sign? stdcall sword "
                    "syscall tbyte vararg word zero? flat near32 far32 abs all "
                    "assumes at casemap common compact cpu dotname emulator "
                    "epilogue error export expr16 expr32 farstack flat "
                    "forceframe huge language large listing ljmp loadds m510 "
                    "medium memory nearstack nodotname noemulator nokeyword "
                    "noljmp nom510 none nonunique nooldmacros nooldstructs "
                    "noreadonly noscoped nosignextend nothing notpublic "
                    "oldmacros oldstructs os_dos para private prologue radix "
                    "readonly req scoped setif2 smallstack tiny use16 use32 "
                    "uses")

MASM_EXT_INST = (5, "addpd addps addsd addss andpd andps andnpd andnps cmpeqpd "
                    "cmpltpd cmplepd cmpunordpd cmpnepd cmpnltpd cmpnlepd "
                    "cmpordpd cmpeqps cmpltps cmpleps cmpunordps cmpneps "
                    "cmpnltps cmpnleps cmpordps cmpeqsd cmpltsd cmplesd "
                    "cmpunordsd cmpnesd cmpnltsd cmpnlesd cmpordsd cmpeqss "
                    "cmpltss cmpless cmpunordss cmpness cmpnltss cmpnless "
                    "cmpordss comisd comiss cvtdq2pd cvtdq2ps cvtpd2dq "
                    "cvtpd2pi cvtpd2ps cvtpi2pd cvtpi2ps cvtps2dq cvtps2pd "
                    "cvtps2pi cvtss2sd cvtss2si cvtsd2si cvtsd2ss cvtsi2sd "
                    "cvtsi2ss cvttpd2dq cvttpd2pi cvttps2dq cvttps2pi "
                    "cvttsd2si cvttss2si divpd divps divsd divss fxrstor "
                    "fxsave ldmxscr lfence mfence maskmovdqu maskmovdq maxpd "
                    "maxps paxsd maxss minpd minps minsd minss movapd movaps "
                    "movdq2q movdqa movdqu movhlps movhpd movhps movd movq "
                    "movlhps movlpd movlps movmskpd movmskps movntdq movnti "
                    "movntpd movntps movntq movq2dq movsd movss movupd movups "
                    "mulpd mulps mulsd mulss orpd orps packssdw packsswb "
                    "packuswb paddb paddsb paddw paddsw paddd paddsiw paddq "
                    "paddusb paddusw pand pandn pause paveb pavgb pavgw "
                    "pavgusb pdistib pextrw pcmpeqb pcmpeqw pcmpeqd pcmpgtb "
                    "pcmpgtw pcmpgtd pf2id pf2iw pfacc pfadd pfcmpeq pfcmpge "
                    "pfcmpgt pfmax pfmin pfmul pmachriw pmaddwd pmagw pmaxsw "
                    "pmaxub pminsw pminub pmovmskb pmulhrwc pmulhriw "
                    "pmulhrwa pmulhuw pmulhw pmullw pmuludq pmvzb pmvnzb "
                    "pmvlzb pmvgezb pfnacc pfpnacc por prefetch prefetchw "
                    "prefetchnta prefetcht0 prefetcht1 prefetcht2 pfrcp "
                    "pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd "
                    "pf2iw pinsrw psadbw pshufd pshufhw pshuflw pshufw psllw "
                    "pslld psllq pslldq psraw psrad psrlw psrld psrlq psrldq "
                    "psubb psubw psubd psubq psubsb psubsw psubusb psubusw "
                    "psubsiw pswapd punpckhbw punpckhwd punpckhdq punpckhqdq "
                    "punpcklbw punpcklwd punpckldq punpcklqdq pxor rcpps "
                    "rcpss rsqrtps rsqrtss sfence shufpd shufps sqrtpd sqrtps "
                    "sqrtsd sqrtss stmxcsr subpd subps subsd subss ucomisd "
                    "ucomiss unpckhpd unpckhps unpcklpd unpcklps xorpd xorps")

#---- Language Styling Specs ----#
SYNTAX_ITEMS = [ (stc.STC_ASM_DEFAULT, 'default_style'),
                 (stc.STC_ASM_CHARACTER, 'char_style'),
                 (stc.STC_ASM_COMMENT, 'comment_style'),
                 (stc.STC_ASM_COMMENTBLOCK, 'comment_style'),
                 (stc.STC_ASM_CPUINSTRUCTION, 'keyword_style'),
                 (stc.STC_ASM_DIRECTIVE, 'keyword3_style'),
                 (stc.STC_ASM_DIRECTIVEOPERAND, 'keyword4_style'),
                 (stc.STC_ASM_EXTINSTRUCTION, 'funct_style'),
                 (stc.STC_ASM_IDENTIFIER, 'default_style'),
                 (stc.STC_ASM_MATHINSTRUCTION, 'keyword_style'),
                 (stc.STC_ASM_NUMBER, 'number_style'),
                 (stc.STC_ASM_OPERATOR, 'operator_style'),
                 (stc.STC_ASM_REGISTER, 'keyword2_style'),
                 (stc.STC_ASM_STRING, 'string_style'),
                 (stc.STC_ASM_STRINGEOL, 'stringeol_style') ]

#-----------------------------------------------------------------------------#

class SyntaxData(syndata.SyntaxDataBase):
    """SyntaxData object for MASM""" 
    def __init__(self, langid):
        syndata.SyntaxDataBase.__init__(self, langid)

        # Setup
        self.SetLexer(stc.STC_LEX_ASM)

    def GetKeywords(self):
        """Returns Specified Keywords List """
        return [MASM_CPU_INST, MASM_FPU_INST, MASM_REGISTERS, MASM_DIRECTIVES,
                MASM_DIREC_OP, MASM_EXT_INST]

    def GetSyntaxSpec(self):
        """Syntax Specifications """
        return SYNTAX_ITEMS

    def GetCommentPattern(self):
        """Returns a list of characters used to comment a block of code """
        return [u';']
w_ww___.__j_av__a2s.c___o___m___ | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.