1""" 
    2    pygments.lexers.apdlexer 
    3    ~~~~~~~~~~~~~~~~~~~~~~~~ 
    4 
    5    Lexers for ANSYS Parametric Design Language. 
    6 
    7    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS. 
    8    :license: BSD, see LICENSE for details. 
    9""" 
    10 
    11import re 
    12 
    13from pygments.lexer import RegexLexer, include, words, default 
    14from pygments.token import Comment, Keyword, Name, Number, Operator, \ 
    15    String, Generic, Punctuation, Whitespace, Escape 
    16 
    17__all__ = ['apdlexer'] 
    18 
    19 
    20class apdlexer(RegexLexer): 
    21    """ 
    22    For APDL source code. 
    23    """ 
    24    name = 'ANSYS parametric design language' 
    25    aliases = ['ansys', 'apdl'] 
    26    filenames = ['*.ans'] 
    27    url = 'https://www.ansys.com' 
    28    version_added = '2.9' 
    29 
    30    flags = re.IGNORECASE 
    31 
    32    # list of elements 
    33    elafunb = ("SURF152", "SURF153", "SURF154", "SURF156", "SHELL157", 
    34               "SURF159", "LINK160", "BEAM161", "PLANE162", 
    35               "SHELL163", "SOLID164", "COMBI165", "MASS166", 
    36               "LINK167", "SOLID168", "TARGE169", "TARGE170", 
    37               "CONTA171", "CONTA172", "CONTA173", "CONTA174", 
    38               "CONTA175", "CONTA176", "CONTA177", "CONTA178", 
    39               "PRETS179", "LINK180", "SHELL181", "PLANE182", 
    40               "PLANE183", "MPC184", "SOLID185", "SOLID186", 
    41               "SOLID187", "BEAM188", "BEAM189", "SOLSH190", 
    42               "INTER192", "INTER193", "INTER194", "INTER195", 
    43               "MESH200", "FOLLW201", "INTER202", "INTER203", 
    44               "INTER204", "INTER205", "SHELL208", "SHELL209", 
    45               "CPT212", "CPT213", "COMBI214", "CPT215", "CPT216", 
    46               "CPT217", "FLUID220", "FLUID221", "PLANE223", 
    47               "SOLID226", "SOLID227", "PLANE230", "SOLID231", 
    48               "SOLID232", "PLANE233", "SOLID236", "SOLID237", 
    49               "PLANE238", "SOLID239", "SOLID240", "HSFLD241", 
    50               "HSFLD242", "SURF251", "SURF252", "REINF263", 
    51               "REINF264", "REINF265", "SOLID272", "SOLID273", 
    52               "SOLID278", "SOLID279", "SHELL281", "SOLID285", 
    53               "PIPE288", "PIPE289", "ELBOW290", "USER300", "BEAM3", 
    54               "BEAM4", "BEAM23", "BEAM24", "BEAM44", "BEAM54", 
    55               "COMBIN7", "FLUID79", "FLUID80", "FLUID81", "FLUID141", 
    56               "FLUID142", "INFIN9", "INFIN47", "PLANE13", "PLANE25", 
    57               "PLANE42", "PLANE53", "PLANE67", "PLANE82", "PLANE83", 
    58               "PLANE145", "PLANE146", "CONTAC12", "CONTAC52", 
    59               "LINK1", "LINK8", "LINK10", "LINK32", "PIPE16", 
    60               "PIPE17", "PIPE18", "PIPE20", "PIPE59", "PIPE60", 
    61               "SHELL41", "SHELL43", "SHELL57", "SHELL63", "SHELL91", 
    62               "SHELL93", "SHELL99", "SHELL150", "SOLID5", "SOLID45", 
    63               "SOLID46", "SOLID65", "SOLID69", "SOLID92", "SOLID95", 
    64               "SOLID117", "SOLID127", "SOLID128", "SOLID147", 
    65               "SOLID148", "SOLID191", "VISCO88", "VISCO89", 
    66               "VISCO106", "VISCO107", "VISCO108", "TRANS109") 
    67 
    68    elafunc = ("PGRAPH", "/VT", "VTIN", "VTRFIL", "VTTEMP", "PGRSET", 
    69               "VTCLR", "VTMETH", "VTRSLT", "VTVMOD", "PGSELE", 
    70               "VTDISC", "VTMP", "VTSEC", "PGWRITE", "VTEVAL", "VTOP", 
    71               "VTSFE", "POUTRES", "VTFREQ", "VTPOST", "VTSL", 
    72               "FLDATA1-40", "HFPCSWP", "MSDATA", "MSVARY", "QFACT", 
    73               "FLOCHECK", "HFPOWER", "MSMASS", "PERI", "SPADP", 
    74               "FLREAD", "HFPORT", "MSMETH", "PLFSS", "SPARM", 
    75               "FLOTRAN", "HFSCAT", "MSMIR", "PLSCH", "SPFSS", 
    76               "HFADP", "ICE", "MSNOMF", "PLSYZ", "SPICE", "HFARRAY", 
    77               "ICEDELE", "MSPROP", "PLTD", "SPSCAN", "HFDEEM", 
    78               "ICELIST", "MSQUAD", "PLTLINE", "SPSWP", "HFEIGOPT", 
    79               "ICVFRC", "MSRELAX", "PLVFRC", "HFEREFINE", "LPRT", 
    80               "MSSOLU", "/PICE", "HFMODPRT", "MSADV", "MSSPEC", 
    81               "PLWAVE", "HFPA", "MSCAP", "MSTERM", "PRSYZ") 
    82 
    83    elafund = ("*VOPER", "VOVLAP", "*VPLOT", "VPLOT", "VPTN", "*VPUT", 
    84               "VPUT", "*VREAD", "VROTAT", "VSBA", "VSBV", "VSBW", 
    85               "/VSCALE", "*VSCFUN", "VSEL", "VSLA", "*VSTAT", "VSUM", 
    86               "VSWEEP", "VSYMM", "VTRAN", "VTYPE", "/VUP", "*VWRITE", 
    87               "/WAIT", "WAVES", "WERASE", "WFRONT", "/WINDOW", 
    88               "WMID", "WMORE", "WPAVE", "WPCSYS", "WPLANE", "WPOFFS", 
    89               "WPROTA", "WPSTYL", "WRFULL", "WRITE", "WRITEMAP", 
    90               "*WRK", "WSORT", "WSPRINGS", "WSTART", "WTBCREATE", 
    91               "XFDATA", "XFENRICH", "XFLIST", "/XFRM", "/XRANGE", 
    92               "XVAR", "/YRANGE", "/ZOOM", "/WB", "XMLO", "/XML", 
    93               "CNTR", "EBLOCK", "CMBLOCK", "NBLOCK", "/TRACK", 
    94               "CWZPLOT", "~EUI", "NELE", "EALL", "NALL", "FLITEM", 
    95               "LSLN", "PSOLVE", "ASLN", "/VERIFY", "/SSS", "~CFIN", 
    96               "*EVAL", "*MOONEY", "/RUNSTAT", "ALPFILL", 
    97               "ARCOLLAPSE", "ARDETACH", "ARFILL", "ARMERGE", 
    98               "ARSPLIT", "FIPLOT", "GAPFINISH", "GAPLIST", 
    99               "GAPMERGE", "GAPOPT", "GAPPLOT", "LNCOLLAPSE", 
    100               "LNDETACH", "LNFILL", "LNMERGE", "LNSPLIT", "PCONV", 
    101               "PLCONV", "PEMOPTS", "PEXCLUDE", "PINCLUDE", "PMETH", 
    102               "/PMETH", "PMOPTS", "PPLOT", "PPRANGE", "PRCONV", 
    103               "PRECISION", "RALL", "RFILSZ", "RITER", "RMEMRY", 
    104               "RSPEED", "RSTAT", "RTIMST", "/RUNST", "RWFRNT", 
    105               "SARPLOT", "SHSD", "SLPPLOT", "SLSPLOT", "VCVFILL", 
    106               "/OPT", "OPEQN", "OPFACT", "OPFRST", "OPGRAD", 
    107               "OPKEEP", "OPLOOP", "OPPRNT", "OPRAND", "OPSUBP", 
    108               "OPSWEEP", "OPTYPE", "OPUSER", "OPVAR", "OPADD", 
    109               "OPCLR", "OPDEL", "OPMAKE", "OPSEL", "OPANL", "OPDATA", 
    110               "OPRESU", "OPSAVE", "OPEXE", "OPLFA", "OPLGR", 
    111               "OPLIST", "OPLSW", "OPRFA", "OPRGR", "OPRSW", 
    112               "PILECALC", "PILEDISPSET", "PILEGEN", "PILELOAD", 
    113               "PILEMASS", "PILERUN", "PILESEL", "PILESTIF", 
    114               "PLVAROPT", "PRVAROPT", "TOCOMP", "TODEF", "TOFREQ", 
    115               "TOTYPE", "TOVAR", "TOEXE", "TOLOOP", "TOGRAPH", 
    116               "TOLIST", "TOPLOT", "TOPRINT", "TOSTAT", "TZAMESH", 
    117               "TZDELE", "TZEGEN", "XVAROPT", "PGSAVE", "SOLCONTROL", 
    118               "TOTAL", "VTGEOM", "VTREAL", "VTSTAT") 
    119 
    120    elafune = ("/ANUM", "AOFFST", "AOVLAP", "APLOT", "APPEND", "APTN", 
    121               "ARCLEN", "ARCTRM", "AREAS", "AREFINE", "AREMESH", 
    122               "AREVERSE", "AROTAT", "ARSCALE", "ARSYM", "ASBA", 
    123               "ASBL", "ASBV", "ASBW", "ASCRES", "ASEL", "ASIFILE", 
    124               "*ASK", "ASKIN", "ASLL", "ASLV", "ASOL", "/ASSIGN", 
    125               "ASUB", "ASUM", "ATAN", "ATRAN", "ATYPE", "/AUTO", 
    126               "AUTOTS", "/AUX2", "/AUX3", "/AUX12", "/AUX15", 
    127               "AVPRIN", "AVRES", "AWAVE", "/AXLAB", "*AXPY", 
    128               "/BATCH", "BCSOPTION", "BETAD", "BF", "BFA", "BFADELE", 
    129               "BFALIST", "BFCUM", "BFDELE", "BFE", "BFECUM", 
    130               "BFEDELE", "BFELIST", "BFESCAL", "BFINT", "BFK", 
    131               "BFKDELE", "BFKLIST", "BFL", "BFLDELE", "BFLIST", 
    132               "BFLLIST", "BFSCALE", "BFTRAN", "BFUNIF", "BFV", 
    133               "BFVDELE", "BFVLIST", "BIOOPT", "BIOT", "BLC4", "BLC5", 
    134               "BLOCK", "BOOL", "BOPTN", "BSAX", "BSMD", "BSM1", 
    135               "BSM2", "BSPLIN", "BSS1", "BSS2", "BSTE", "BSTQ", 
    136               "BTOL", "BUCOPT", "C", "CALC", "CAMPBELL", "CBDOF", 
    137               "CBMD", "CBMX", "CBTE", "CBTMP", "CDOPT", "CDREAD", 
    138               "CDWRITE", "CE", "CECHECK", "CECMOD", "CECYC", 
    139               "CEDELE", "CEINTF", "CELIST", "CENTER", "CEQN", 
    140               "CERIG", "CESGEN", "CFACT", "*CFCLOS", "*CFOPEN", 
    141               "*CFWRITE", "/CFORMAT", "CGLOC", "CGOMGA", "CGROW", 
    142               "CHECK", "CHKMSH", "CINT", "CIRCLE", "CISOL", 
    143               "/CLABEL", "/CLEAR", "CLOCAL", "CLOG", "/CLOG", 
    144               "CLRMSHLN", "CM", "CMACEL", "/CMAP", "CMATRIX", 
    145               "CMDELE", "CMDOMEGA", "CMEDIT", "CMGRP", "CMLIST", 
    146               "CMMOD", "CMOMEGA", "CMPLOT", "CMROTATE", "CMSEL", 
    147               "CMSFILE", "CMSOPT", "CMWRITE", "CNCHECK", "CNKMOD", 
    148               "CNTR", "CNVTOL", "/COLOR", "*COMP", "COMBINE", 
    149               "COMPRESS", "CON4", "CONE", "/CONFIG", "CONJUG", 
    150               "/CONTOUR", "/COPY", "CORIOLIS", "COUPLE", "COVAL", 
    151               "CP", "CPCYC", "CPDELE", "CPINTF", "/CPLANE", "CPLGEN", 
    152               "CPLIST", "CPMERGE", "CPNGEN", "CPSGEN", "CQC", 
    153               "*CREATE", "CRPLIM", "CS", "CSCIR", "CSDELE", "CSKP", 
    154               "CSLIST", "CSWPLA", "CSYS", "/CTYPE", "CURR2D", 
    155               "CUTCONTROL", "/CVAL", "CVAR", "/CWD", "CYCCALC", 
    156               "/CYCEXPAND", "CYCFILES", "CYCFREQ", "*CYCLE", 
    157               "CYCLIC", "CYCOPT", "CYCPHASE", "CYCSPEC", "CYL4", 
    158               "CYL5", "CYLIND", "CZDEL", "CZMESH", "D", "DA", 
    159               "DADELE", "DALIST", "DAMORPH", "DATA", "DATADEF", 
    160               "DCGOMG", "DCUM", "DCVSWP", "DDASPEC", "DDELE", 
    161               "DDOPTION", "DEACT", "DEFINE", "*DEL", "DELETE", 
    162               "/DELETE", "DELTIM", "DELTIME", "DEMORPH", "DERIV", "DESIZE", 
    163               "DESOL", "DETAB", "/DEVDISP", "/DEVICE", "/DFLAB", 
    164               "DFLX", "DFSWAVE", "DIG", "DIGIT", "*DIM", 
    165               "/DIRECTORY", "DISPLAY", "/DIST", "DJ", "DJDELE", 
    166               "DJLIST", "DK", "DKDELE", "DKLIST", "DL", "DLDELE", 
    167               "DLIST", "DLLIST", "*DMAT", "DMOVE", "DMPEXT", 
    168               "DMPOPTION", "DMPRAT", "DMPSTR", "DNSOL", "*DO", "DOF", 
    169               "DOFSEL", "DOMEGA", "*DOT", "*DOWHILE", "DSCALE", 
    170               "/DSCALE", "DSET", "DSPOPTION", "DSUM", "DSURF", 
    171               "DSYM", "DSYS", "DTRAN", "DUMP", "/DV3D", "DVAL", 
    172               "DVMORPH", "DYNOPT", "E", "EALIVE", "EDADAPT", "EDALE", 
    173               "EDASMP", "EDBOUND", "EDBX", "EDBVIS", "EDCADAPT", 
    174               "EDCGEN", "EDCLIST", "EDCMORE", "EDCNSTR", "EDCONTACT", 
    175               "EDCPU", "EDCRB", "EDCSC", "EDCTS", "EDCURVE", 
    176               "EDDAMP", "EDDBL", "EDDC", "EDDRELAX", "EDDUMP", 
    177               "EDELE", "EDENERGY", "EDFPLOT", "EDGCALE", "/EDGE", 
    178               "EDHGLS", "EDHIST", "EDHTIME", "EDINT", "EDIPART", 
    179               "EDIS", "EDLCS", "EDLOAD", "EDMP", "EDNB", "EDNDTSD", 
    180               "EDNROT", "EDOPT", "EDOUT", "EDPART", "EDPC", "EDPL", 
    181               "EDPVEL", "EDRC", "EDRD", "EDREAD", "EDRI", "EDRST", 
    182               "EDRUN", "EDSHELL", "EDSOLV", "EDSP", "EDSTART", 
    183               "EDTERM", "EDTP", "EDVEL", "EDWELD", "EDWRITE", 
    184               "EEXTRUDE", "/EFACET", "EGEN", "*EIGEN", "EINFIN", 
    185               "EINTF", "EKILL", "ELBOW", "ELEM", "ELIST", "*ELSE", 
    186               "*ELSEIF", "EMAGERR", "EMATWRITE", "EMF", "EMFT", 
    187               "EMID", "EMIS", "EMODIF", "EMORE", "EMSYM", "EMTGEN", 
    188               "EMUNIT", "EN", "*END", "*ENDDO", "*ENDIF", 
    189               "ENDRELEASE", "ENERSOL", "ENGEN", "ENORM", "ENSYM", 
    190               "EORIENT", "EPLOT", "EQSLV", "ERASE", "/ERASE", 
    191               "EREAD", "EREFINE", "EREINF", "ERESX", "ERNORM", 
    192               "ERRANG", "ESCHECK", "ESEL", "/ESHAPE", "ESIZE", 
    193               "ESLA", "ESLL", "ESLN", "ESLV", "ESOL", "ESORT", 
    194               "ESSOLV", "ESTIF", "ESURF", "ESYM", "ESYS", "ET", 
    195               "ETABLE", "ETCHG", "ETCONTROL", "ETDELE", "ETLIST", 
    196               "ETYPE", "EUSORT", "EWRITE", "*EXIT", "/EXIT", "EXP", 
    197               "EXPAND", "/EXPAND", "EXPASS", "*EXPORT", "EXPROFILE", 
    198               "EXPSOL", "EXTOPT", "EXTREM", "EXUNIT", "F", "/FACET", 
    199               "FATIGUE", "FC", "FCCHECK", "FCDELE", "FCLIST", "FCUM", 
    200               "FCTYP", "FDELE", "/FDELE", "FE", "FEBODY", "FECONS", 
    201               "FEFOR", "FELIST", "FESURF", "*FFT", "FILE", 
    202               "FILEAUX2", "FILEAUX3", "FILEDISP", "FILL", "FILLDATA", 
    203               "/FILNAME", "FINISH", "FITEM", "FJ", "FJDELE", 
    204               "FJLIST", "FK", "FKDELE", "FKLIST", "FL", "FLIST", 
    205               "FLLIST", "FLST", "FLUXV", "FLUREAD", "FMAGBC", 
    206               "FMAGSUM", "/FOCUS", "FOR2D", "FORCE", "FORM", 
    207               "/FORMAT", "FP", "FPLIST", "*FREE", "FREQ", "FRQSCL", 
    208               "FS", "FSCALE", "FSDELE", "FSLIST", "FSNODE", "FSPLOT", 
    209               "FSSECT", "FSSPARM", "FSUM", "FTCALC", "FTRAN", 
    210               "FTSIZE", "FTWRITE", "FTYPE", "FVMESH", "GAP", "GAPF", 
    211               "GAUGE", "GCDEF", "GCGEN", "/GCMD", "/GCOLUMN", 
    212               "GENOPT", "GEOM", "GEOMETRY", "*GET", "/GFILE", 
    213               "/GFORMAT", "/GLINE", "/GMARKER", "GMATRIX", "GMFACE", 
    214               "*GO", "/GO", "/GOLIST", "/GOPR", "GP", "GPDELE", 
    215               "GPLIST", "GPLOT", "/GRAPHICS", "/GRESUME", "/GRID", 
    216               "/GROPT", "GRP", "/GRTYP", "/GSAVE", "GSBDATA", 
    217               "GSGDATA", "GSLIST", "GSSOL", "/GST", "GSUM", "/GTHK", 
    218               "/GTYPE", "HARFRQ", "/HBC", "HBMAT", "/HEADER", "HELP", 
    219               "HELPDISP", "HEMIOPT", "HFANG", "HFSYM", "HMAGSOLV", 
    220               "HPGL", "HPTCREATE", "HPTDELETE", "HRCPLX", "HREXP", 
    221               "HROPT", "HROCEAN", "HROUT", "IC", "ICDELE", "ICLIST", 
    222               "/ICLWID", "/ICSCALE", "*IF", "IGESIN", "IGESOUT", 
    223               "/IMAGE", "IMAGIN", "IMESH", "IMMED", "IMPD", 
    224               "INISTATE", "*INIT", "/INPUT", "/INQUIRE", "INRES", 
    225               "INRTIA", "INT1", "INTSRF", "IOPTN", "IRLF", "IRLIST", 
    226               "*ITENGINE", "JPEG", "JSOL", "K", "KATT", "KBC", 
    227               "KBETW", "KCALC", "KCENTER", "KCLEAR", "KDELE", 
    228               "KDIST", "KEEP", "KESIZE", "KEYOPT", "KEYPTS", "KEYW", 
    229               "KFILL", "KGEN", "KL", "KLIST", "KMESH", "KMODIF", 
    230               "KMOVE", "KNODE", "KPLOT", "KPSCALE", "KREFINE", 
    231               "KSCALE", "KSCON", "KSEL", "KSLL", "KSLN", "KSUM", 
    232               "KSYMM", "KTRAN", "KUSE", "KWPAVE", "KWPLAN", "L", 
    233               "L2ANG", "L2TAN", "LANG", "LARC", "/LARC", "LAREA", 
    234               "LARGE", "LATT", "LAYER", "LAYERP26", "LAYLIST", 
    235               "LAYPLOT", "LCABS", "LCASE", "LCCALC", "LCCAT", 
    236               "LCDEF", "LCFACT", "LCFILE", "LCLEAR", "LCOMB", 
    237               "LCOPER", "LCSEL", "LCSL", "LCSUM", "LCWRITE", 
    238               "LCZERO", "LDELE", "LDIV", "LDRAG", "LDREAD", "LESIZE", 
    239               "LEXTND", "LFILLT", "LFSURF", "LGEN", "LGLUE", 
    240               "LGWRITE", "/LIGHT", "LINA", "LINE", "/LINE", "LINES", 
    241               "LINL", "LINP", "LINV", "LIST", "*LIST", "LLIST", 
    242               "LMATRIX", "LMESH", "LNSRCH", "LOCAL", "LOVLAP", 
    243               "LPLOT", "LPTN", "LREFINE", "LREVERSE", "LROTAT", 
    244               "LSBA", "*LSBAC", "LSBL", "LSBV", "LSBW", "LSCLEAR", 
    245               "LSDELE", "*LSDUMP", "LSEL", "*LSENGINE", "*LSFACTOR", 
    246               "LSLA", "LSLK", "LSOPER", "/LSPEC", "LSREAD", 
    247               "*LSRESTORE", "LSSCALE", "LSSOLVE", "LSTR", "LSUM", 
    248               "LSWRITE", "/LSYMBOL", "LSYMM", "LTAN", "LTRAN", 
    249               "LUMPM", "LVSCALE", "LWPLAN", "M", "MADAPT", "MAGOPT", 
    250               "MAGSOLV", "/MAIL", "MAP", "/MAP", "MAP2DTO3D", 
    251               "MAPSOLVE", "MAPVAR", "MASTER", "MAT", "MATER", 
    252               "MCHECK", "MDAMP", "MDELE", "MDPLOT", "MEMM", "/MENU", 
    253               "MESHING", "MFANALYSIS", "MFBUCKET", "MFCALC", "MFCI", 
    254               "MFCLEAR", "MFCMMAND", "MFCONV", "MFDTIME", "MFELEM", 
    255               "MFEM", "MFEXTER", "MFFNAME", "MFFR", "MFIMPORT", 
    256               "MFINTER", "MFITER", "MFLCOMM", "MFLIST", "MFMAP", 
    257               "MFORDER", "MFOUTPUT", "*MFOURI", "MFPSIMUL", "MFRC", 
    258               "MFRELAX", "MFRSTART", "MFSORDER", "MFSURFACE", 
    259               "MFTIME", "MFTOL", "*MFUN", "MFVOLUME", "MFWRITE", 
    260               "MGEN", "MIDTOL", "/MKDIR", "MLIST", "MMASS", "MMF", 
    261               "MODCONT", "MODE", "MODIFY", "MODMSH", "MODSELOPTION", 
    262               "MODOPT", "MONITOR", "*MOPER", "MOPT", "MORPH", "MOVE", 
    263               "MP", "MPAMOD", "MPCHG", "MPCOPY", "MPDATA", "MPDELE", 
    264               "MPDRES", "/MPLIB", "MPLIST", "MPPLOT", "MPREAD", 
    265               "MPRINT", "MPTEMP", "MPTGEN", "MPTRES", "MPWRITE", 
    266               "/MREP", "MSAVE", "*MSG", "MSHAPE", "MSHCOPY", 
    267               "MSHKEY", "MSHMID", "MSHPATTERN", "MSOLVE", "/MSTART", 
    268               "MSTOLE", "*MULT", "*MWRITE", "MXPAND", "N", "NANG", 
    269               "NAXIS", "NCNV", "NDELE", "NDIST", "NDSURF", "NEQIT", 
    270               "/NERR", "NFORCE", "NGEN", "NKPT", "NLADAPTIVE", 
    271               "NLDIAG", "NLDPOST", "NLGEOM", "NLHIST", "NLIST", 
    272               "NLMESH", "NLOG", "NLOPT", "NMODIF", "NOCOLOR", 
    273               "NODES", "/NOERASE", "/NOLIST", "NOOFFSET", "NOORDER", 
    274               "/NOPR", "NORA", "NORL", "/NORMAL", "NPLOT", "NPRINT", 
    275               "NREAD", "NREFINE", "NRLSUM", "*NRM", "NROPT", 
    276               "NROTAT", "NRRANG", "NSCALE", "NSEL", "NSLA", "NSLE", 
    277               "NSLK", "NSLL", "NSLV", "NSMOOTH", "NSOL", "NSORT", 
    278               "NSTORE", "NSUBST", "NSVR", "NSYM", "/NUMBER", 
    279               "NUMCMP", "NUMEXP", "NUMMRG", "NUMOFF", "NUMSTR", 
    280               "NUMVAR", "NUSORT", "NWPAVE", "NWPLAN", "NWRITE", 
    281               "OCDATA", "OCDELETE", "OCLIST", "OCREAD", "OCTABLE", 
    282               "OCTYPE", "OCZONE", "OMEGA", "OPERATE", "OPNCONTROL", 
    283               "OUTAERO", "OUTOPT", "OUTPR", "/OUTPUT", "OUTRES", 
    284               "OVCHECK", "PADELE", "/PAGE", "PAGET", "PAPUT", 
    285               "PARESU", "PARTSEL", "PARRES", "PARSAV", "PASAVE", 
    286               "PATH", "PAUSE", "/PBC", "/PBF", "PCALC", "PCGOPT", 
    287               "PCIRC", "/PCIRCLE", "/PCOPY", "PCROSS", "PDANL", 
    288               "PDCDF", "PDCFLD", "PDCLR", "PDCMAT", "PDCORR", 
    289               "PDDMCS", "PDDOEL", "PDEF", "PDEXE", "PDHIST", 
    290               "PDINQR", "PDLHS", "PDMETH", "PDOT", "PDPINV", 
    291               "PDPLOT", "PDPROB", "PDRESU", "PDROPT", "/PDS", 
    292               "PDSAVE", "PDSCAT", "PDSENS", "PDSHIS", "PDUSER", 
    293               "PDVAR", "PDWRITE", "PERBC2D", "PERTURB", "PFACT", 
    294               "PHYSICS", "PIVCHECK", "PLCAMP", "PLCFREQ", "PLCHIST", 
    295               "PLCINT", "PLCPLX", "PLCRACK", "PLDISP", "PLESOL", 
    296               "PLETAB", "PLFAR", "PLF2D", "PLGEOM", "PLLS", "PLMAP", 
    297               "PLMC", "PLNEAR", "PLNSOL", "/PLOPTS", "PLORB", "PLOT", 
    298               "PLOTTING", "PLPAGM", "PLPATH", "PLSECT", "PLST", 
    299               "PLTIME", "PLTRAC", "PLVAR", "PLVECT", "PLZZ", 
    300               "/PMACRO", "PMAP", "PMGTRAN", "PMLOPT", "PMLSIZE", 
    301               "/PMORE", "PNGR", "/PNUM", "POINT", "POLY", "/POLYGON", 
    302               "/POST1", "/POST26", "POWERH", "PPATH", "PRANGE", 
    303               "PRAS", "PRCAMP", "PRCINT", "PRCPLX", "PRED", 
    304               "PRENERGY", "/PREP7", "PRERR", "PRESOL", "PRETAB", 
    305               "PRFAR", "PRI2", "PRIM", "PRINT", "*PRINT", "PRISM", 
    306               "PRITER", "PRJSOL", "PRNEAR", "PRNLD", "PRNSOL", 
    307               "PROD", "PRORB", "PRPATH", "PRRFOR", "PRRSOL", 
    308               "PRSCONTROL", "PRSECT", "PRTIME", "PRVAR", "PRVECT", 
    309               "PSCONTROL", "PSCR", "PSDCOM", "PSDFRQ", "PSDGRAPH", 
    310               "PSDRES", "PSDSPL", "PSDUNIT", "PSDVAL", "PSDWAV", 
    311               "/PSEARCH", "PSEL", "/PSF", "PSMAT", "PSMESH", 
    312               "/PSPEC", "/PSTATUS", "PSTRES", "/PSYMB", "PTR", 
    313               "PTXY", "PVECT", "/PWEDGE", "QDVAL", "QRDOPT", "QSOPT", 
    314               "QUAD", "/QUIT", "QUOT", "R", "RACE", "RADOPT", 
    315               "RAPPND", "RATE", "/RATIO", "RBE3", "RCON", "RCYC", 
    316               "RDEC", "RDELE", "READ", "REAL", "REALVAR", "RECTNG", 
    317               "REMESH", "/RENAME", "REORDER", "*REPEAT", "/REPLOT", 
    318               "RESCOMBINE", "RESCONTROL", "RESET", "/RESET", "RESP", 
    319               "RESUME", "RESVEC", "RESWRITE", "*RETURN", "REXPORT", 
    320               "REZONE", "RFORCE", "/RGB", "RIGID", "RIGRESP", 
    321               "RIMPORT", "RLIST", "RMALIST", "RMANL", "RMASTER", 
    322               "RMCAP", "RMCLIST", "/RMDIR", "RMFLVEC", "RMLVSCALE", 
    323               "RMMLIST", "RMMRANGE", "RMMSELECT", "RMNDISP", 
    324               "RMNEVEC", "RMODIF", "RMORE", "RMPORDER", "RMRESUME", 
    325               "RMRGENERATE", "RMROPTIONS", "RMRPLOT", "RMRSTATUS", 
    326               "RMSAVE", "RMSMPLE", "RMUSE", "RMXPORT", "ROCK", 
    327               "ROSE", "RPOLY", "RPR4", "RPRISM", "RPSD", "RSFIT", 
    328               "RSOPT", "RSPLIT", "RSPLOT", "RSPRNT", "RSSIMS", 
    329               "RSTMAC", "RSTOFF", "RSURF", "RSYMM", "RSYS", "RTHICK", 
    330               "SABS", "SADD", "SALLOW", "SAVE", "SBCLIST", "SBCTRAN", 
    331               "SDELETE", "SE", "SECCONTROL", "SECDATA", 
    332               "SECFUNCTION", "SECJOINT", "/SECLIB", "SECLOCK", 
    333               "SECMODIF", "SECNUM", "SECOFFSET", "SECPLOT", 
    334               "SECREAD", "SECSTOP", "SECTYPE", "SECWRITE", "SED", 
    335               "SEDLIST", "SEEXP", "/SEG", "SEGEN", "SELIST", "SELM", 
    336               "SELTOL", "SENERGY", "SEOPT", "SESYMM", "*SET", "SET", 
    337               "SETFGAP", "SETRAN", "SEXP", "SF", "SFA", "SFACT", 
    338               "SFADELE", "SFALIST", "SFBEAM", "SFCALC", "SFCUM", 
    339               "SFDELE", "SFE", "SFEDELE", "SFELIST", "SFFUN", 
    340               "SFGRAD", "SFL", "SFLDELE", "SFLEX", "SFLIST", 
    341               "SFLLIST", "SFSCALE", "SFTRAN", "/SHADE", "SHELL", 
    342               "/SHOW", "/SHOWDISP", "SHPP", "/SHRINK", "SLIST", 
    343               "SLOAD", "SMALL", "*SMAT", "SMAX", "/SMBC", "SMBODY", 
    344               "SMCONS", "SMFOR", "SMIN", "SMOOTH", "SMRTSIZE", 
    345               "SMSURF", "SMULT", "SNOPTION", "SOLU", "/SOLU", 
    346               "SOLUOPT", "SOLVE", "SORT", "SOURCE", "SPACE", 
    347               "SPCNOD", "SPCTEMP", "SPDAMP", "SPEC", "SPFREQ", 
    348               "SPGRAPH", "SPH4", "SPH5", "SPHERE", "SPLINE", "SPLOT", 
    349               "SPMWRITE", "SPOINT", "SPOPT", "SPREAD", "SPTOPT", 
    350               "SPOWER", "SPUNIT", "SPVAL", "SQRT", "*SREAD", "SRSS", 
    351               "SSBT", "/SSCALE", "SSLN", "SSMT", "SSPA", "SSPB", 
    352               "SSPD", "SSPE", "SSPM", "SSUM", "SSTATE", "STABILIZE", 
    353               "STAOPT", "STAT", "*STATUS", "/STATUS", "STEF", 
    354               "STORE", "SUBOPT", "SUBSET", "SUCALC", 
    355               "SUCR", "SUDEL", "SUEVAL", "SUGET", "SUMAP", "SUMTYPE", 
    356               "SUPL", "SUPR", "SURESU", "SUSAVE", "SUSEL", "SUVECT", 
    357               "SV", "SVPLOT", "SVTYP", "SWADD", "SWDEL", "SWGEN", 
    358               "SWLIST", "SYNCHRO", "/SYP", "/SYS", "TALLOW", 
    359               "TARGET", "*TAXIS", "TB", "TBCOPY", "TBDATA", "TBDELE", 
    360               "TBEO", "TBIN", "TBFIELD", "TBFT", "TBLE", "TBLIST", 
    361               "TBMODIF", "TBPLOT", "TBPT", "TBTEMP", "TCHG", "/TEE", 
    362               "TERM", "THEXPAND", "THOPT", "TIFF", "TIME", 
    363               "TIMERANGE", "TIMINT", "TIMP", "TINTP", 
    364               "/TLABEL", "TOFFST", "*TOPER", "TORQ2D", "TORQC2D", 
    365               "TORQSUM", "TORUS", "TRANS", "TRANSFER", "*TREAD", 
    366               "TREF", "/TRIAD", "/TRLCY", "TRNOPT", "TRPDEL", 
    367               "TRPLIS", "TRPOIN", "TRTIME", "TSHAP", "/TSPEC", 
    368               "TSRES", "TUNIF", "TVAR", "/TXTRE", "/TYPE", "TYPE", 
    369               "/UCMD", "/UDOC", "/UI", "UIMP", "/UIS", "*ULIB", "/UPF", 
    370               "UNDELETE", "UNDO", "/UNITS", "UNPAUSE", "UPCOORD", 
    371               "UPGEOM", "*USE", "/USER", "USRCAL", "USRDOF", 
    372               "USRELEM", "V", "V2DOPT", "VA", "*VABS", "VADD", 
    373               "VARDEL", "VARNAM", "VATT", "VCLEAR", "*VCOL", 
    374               "/VCONE", "VCROSS", "*VCUM", "VDDAM", "VDELE", "VDGL", 
    375               "VDOT", "VDRAG", "*VEC", "*VEDIT", "VEORIENT", "VEXT", 
    376               "*VFACT", "*VFILL", "VFOPT", "VFQUERY", "VFSM", 
    377               "*VFUN", "VGEN", "*VGET", "VGET", "VGLUE", "/VIEW", 
    378               "VIMP", "VINP", "VINV", "*VITRP", "*VLEN", "VLIST", 
    379               "VLSCALE", "*VMASK", "VMESH", "VOFFST", "VOLUMES") 
    380 
    381    # list of in-built () functions 
    382    elafunf = ("NX()", "NY()", "NZ()", "KX()", "KY()", "KZ()", "LX()", 
    383               "LY()", "LZ()", "LSX()", "LSY()", "LSZ()", "NODE()", 
    384               "KP()", "DISTND()", "DISTKP()", "DISTEN()", "ANGLEN()", 
    385               "ANGLEK()", "NNEAR()", "KNEAR()", "ENEARN()", 
    386               "AREAND()", "AREAKP()", "ARNODE()", "NORMNX()", 
    387               "NORMNY()", "NORMNZ()", "NORMKX()", "NORMKY()", 
    388               "NORMKZ()", "ENEXTN()", "NELEM()", "NODEDOF()", 
    389               "ELADJ()", "NDFACE()", "NMFACE()", "ARFACE()", "UX()", 
    390               "UY()", "UZ()", "ROTX()", "ROTY()", "ROTZ()", "TEMP()", 
    391               "PRES()", "VX()", "VY()", "VZ()", "ENKE()", "ENDS()", 
    392               "VOLT()", "MAG()", "AX()", "AY()", "AZ()", 
    393               "VIRTINQR()", "KWGET()", "VALCHR()", "VALHEX()", 
    394               "CHRHEX()", "STRFILL()", "STRCOMP()", "STRPOS()", 
    395               "STRLENG()", "UPCASE()", "LWCASE()", "JOIN()", 
    396               "SPLIT()", "ABS()", "SIGN()", "CXABS()", "EXP()", 
    397               "LOG()", "LOG10()", "SQRT()", "NINT()", "MOD()", 
    398               "RAND()", "GDIS()", "SIN()", "COS()", "TAN()", 
    399               "SINH()", "COSH()", "TANH()", "ASIN()", "ACOS()", 
    400               "ATAN()", "ATAN2()") 
    401 
    402    elafung = ("NSEL()", "ESEL()", "KSEL()", "LSEL()", "ASEL()", 
    403               "VSEL()", "NDNEXT()", "ELNEXT()", "KPNEXT()", 
    404               "LSNEXT()", "ARNEXT()", "VLNEXT()", "CENTRX()", 
    405               "CENTRY()", "CENTRZ()") 
    406 
    407    elafunh = ("~CAT5IN", "~CATIAIN", "~PARAIN", "~PROEIN", "~SATIN", 
    408               "~UGIN", "A", "AADD", "AATT", "ABEXTRACT", "*ABBR", 
    409               "ABBRES", "ABBSAV", "ABS", "ACCAT", "ACCOPTION", 
    410               "ACEL", "ACLEAR", "ADAMS", "ADAPT", "ADD", "ADDAM", 
    411               "ADELE", "ADGL", "ADRAG", "AESIZE", "AFILLT", "AFLIST", 
    412               "AFSURF", "*AFUN", "AGEN", "AGLUE", "AINA", "AINP", 
    413               "AINV", "AL", "ALIST", "ALLSEL", "ALPHAD", "AMAP", 
    414               "AMESH", "/AN3D", "ANCNTR", "ANCUT", "ANCYC", "ANDATA", 
    415               "ANDSCL", "ANDYNA", "/ANFILE", "ANFLOW", "/ANGLE", 
    416               "ANHARM", "ANIM", "ANISOS", "ANMODE", "ANMRES", 
    417               "/ANNOT", "ANORM", "ANPRES", "ANSOL", "ANSTOAQWA", 
    418               "ANSTOASAS", "ANTIME", "ANTYPE") 
    419 
    420    special = ("/COM", "/TITLE", "STITLE") 
    421 
    422    elements = ("SOLID5", 
    423                "LINK11", 
    424                "PLANE13", 
    425                "COMBIN14", 
    426                "MASS2", 
    427                "PLANE25", 
    428                "MATRIX27", 
    429                "FLUID29", 
    430                "FLUID30", 
    431                "LINK31", 
    432                "LINK33", 
    433                "LINK34", 
    434                "PLANE35", 
    435                "SOURC36", 
    436                "COMBIN37", 
    437                "FLUID38", 
    438                "COMBIN39", 
    439                "COMBIN40", 
    440                "INFIN47", 
    441                "MATRIX50", 
    442                "PLANE55", 
    443                "SHELL61", 
    444                "LINK68", 
    445                "SOLID70", 
    446                "MASS71", 
    447                "PLANE75", 
    448                "PLANE77", 
    449                "PLANE78", 
    450                "PLANE83", 
    451                "SOLID87", 
    452                "SOLID90", 
    453                "CIRCU94", 
    454                "SOLID96", 
    455                "SOLID98", 
    456                "INFIN110", 
    457                "INFIN111", 
    458                "FLUID116", 
    459                "PLANE121", 
    460                "SOLID122", 
    461                "SOLID123", 
    462                "CIRCU124", 
    463                "CIRCU125", 
    464                "TRANS126", 
    465                "FLUID129", 
    466                "FLUID130", 
    467                "SHELL131", 
    468                "SHELL132", 
    469                "FLUID136", 
    470                "FLUID138", 
    471                "FLUID139", 
    472                "SURF151", 
    473                "SURF152", 
    474                "SURF153", 
    475                "SURF154", 
    476                "SURF155", 
    477                "SURF156", 
    478                "SHELL157", 
    479                "SURF159", 
    480                "TARGE169", 
    481                "TARGE170", 
    482                "CONTA172", 
    483                "CONTA174", 
    484                "CONTA175", 
    485                "CONTA177", 
    486                "CONTA178", 
    487                "PRETS179", 
    488                "LINK180", 
    489                "SHELL181", 
    490                "PLANE182", 
    491                "PLANE183", 
    492                "MPC184", 
    493                "SOLID185", 
    494                "SOLID186", 
    495                "SOLID187", 
    496                "BEAM188", 
    497                "BEAM189", 
    498                "SOLSH190", 
    499                "INTER192", 
    500                "INTER193", 
    501                "INTER194", 
    502                "INTER195", 
    503                "MESH200", 
    504                "FOLLW201", 
    505                "INTER202", 
    506                "INTER203", 
    507                "INTER204", 
    508                "INTER205", 
    509                "SHELL208", 
    510                "SHELL209", 
    511                "CPT212", 
    512                "CPT213", 
    513                "COMBI214", 
    514                "CPT215", 
    515                "CPT216", 
    516                "CPT217", 
    517                "FLUID218", 
    518                "FLUID220", 
    519                "FLUID221", 
    520                "PLANE222", 
    521                "PLANE223", 
    522                "SOLID225", 
    523                "SOLID226", 
    524                "SOLID227", 
    525                "PLANE230", 
    526                "SOLID231", 
    527                "SOLID232", 
    528                "PLANE233", 
    529                "SOLID236", 
    530                "SOLID237", 
    531                "PLANE238", 
    532                "SOLID239", 
    533                "SOLID240", 
    534                "HSFLD241", 
    535                "HSFLD242", 
    536                "COMBI250", 
    537                "SURF251", 
    538                "SURF252", 
    539                "INFIN257", 
    540                "REINF263", 
    541                "REINF264", 
    542                "REINF265", 
    543                "SOLID272", 
    544                "SOLID273", 
    545                "SOLID278", 
    546                "SOLID279", 
    547                "CABLE280", 
    548                "SHELL281", 
    549                "SOLID285", 
    550                "PIPE288", 
    551                "PIPE289", 
    552                "ELBOW290", 
    553                "SOLID291", 
    554                "PLANE292", 
    555                "PLANE293", 
    556                "USER300") 
    557 
    558    tokens = { 
    559        'root': [ 
    560            (r'[^\S\n]+', Whitespace), 
    561            (words((elafunb+elafunc+elafund+elafune+elafunh+special), suffix=r'\b'), Keyword, 'non-keyword'), 
    562            default('non-keyword'), 
    563        ], 
    564        'non-keyword': [ 
    565            (r'!.*\n', Comment, '#pop'), 
    566            (r'%.*?%', Escape), 
    567            include('strings'), 
    568            include('nums'), 
    569            (words((elafunf+elafung), suffix=r'\b'), Name.Builtin), 
    570            (words((elements), suffix=r'\b'), Name.Property), 
    571            include('core'), 
    572            (r'AR[0-9]+', Name.Variable.Instance), 
    573            (r'[a-z_][a-z0-9_]*', Name.Variable), 
    574            (r'\n+', Whitespace, '#pop'), 
    575            (r'[^\S\n]+', Whitespace), 
    576        ], 
    577        'core': [ 
    578            # Operators 
    579            (r'(\*\*|\*|\+|-|\/|<|>|<=|>=|==|\/=|=|\(|\))', Operator), 
    580            (r'/EOF', Generic.Emph), 
    581            (r'[\.(),:&;]', Punctuation), 
    582        ], 
    583        'strings': [ 
    584            (r'(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"', String.Double), 
    585            (r"(?s)'(\\\\|\\[0-7]+|\\.|[^'\\])*'", String.Single), 
    586            (r'[$%]', String.Symbol), 
    587        ], 
    588        'nums': [ 
    589            (r'[+-]?\d*\.\d+([efEF][-+]?\d+)?', Number.Float), # with dot 
    590            (r'([+-]?\d+([efEF][-+]?\d+))', Number.Float), # With scientific notation 
    591            (r'\b\d+(?![.ef])', Number.Integer), # integer simple 
    592        ] 
    593    }