apdlexer.py 30 KB

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