1/** 2 * Name: skill 3 * Description: Cadence Design Systems lispy language. 4 * Author: Jean-Marc Calvez <jean-marc.calvez@st.com> 5 */ 6 7state skill extends HighlightEntry 8{ 9 /* Line Comments (lispish). */ 10 /;/ { 11 comment_face (true); 12 language_print ($0); 13 call (eat_one_line); 14 comment_face (false); 15 } 16 17 /* Block Comments (C-style) */ 18 /\/\*/ { 19 comment_face (true); 20 language_print ($0); 21 call (c_comment); 22 comment_face (false); 23 } 24 25 /* String constants. */ 26 /\"/ { 27 string_face (true); 28 language_print ($0); 29 call (c_string); 30 string_face (false); 31 } 32 33 /* Definitions. */ 34 /(\([ \t]*)(procedure|defmacro|mprocedure|nprocedure|defun)([ \t]+\(?)([!\$%&\*\/:<=>\?~_^a-zA-Z][!\$%&\*\/:<=>\?~_^a-zA-Z0-9.+\-]*)/ { 35 /* Starting garbage. */ 36 language_print ($1); 37 38 /* Keyword. */ 39 keyword_face (true); 40 language_print ($2); 41 keyword_face (false); 42 43 /* Middle garbage. */ 44 language_print ($3); 45 46 /* Function name. */ 47 function_name_face (true); 48 language_print ($4); 49 function_name_face (false); 50 } 51 52 /* Keywords. Taken from Skill Language in the Quick Ref. + operators 53 (build-re '(@rest @optional @key abs acos add1 alias alphalessp 54 alphaNumCmp and append append1 apply arglist arrayp arrayref asin assoc 55 assq atan atom band bcdp bitfield bitfield bnand bnor bnot bor boundp 56 break breakpt buildString bxnor bxor caaar caadr caar cadr callInitProc 57 car case caseq cdar cddr cdr changeWorkingDir clear clearExitProcs close 58 compareTime compress concat cond cons cont continue copy 59 copyDefstructDeep cos count createDir csh debugQuit debugStatus declare 60 declareLambda declareNLambda defCapDepends defCapPrefixes defInitProc 61 defmacro defprop defstruct defstructp defun defUserInitProc defvar 62 deleteDir deleteFile difference drain dtpr dump ed edi edit edl encrypt 63 eq equal err error errset errsetstring eval evalstring evenp exists exit 64 exp expandMacro expt fileLength fileSeek fileTell fix fixp float floatp 65 for forall foreach fprintf fscanf gc gcsummary gensym get get_pname 66 get_string getAllLoadedFiles getc getchar getCurrentTime getd getDirFiles 67 getFnWriteProtect getFunctions getInstallPath getq getqq gets 68 getShellEnvVar getSkillPath getVarWriteProtect getVersion getWarn 69 getWorkingDir go geqp getq getqq greaterp if ilToolBox index infile 70 installDebugger instring isCallable isDir isExecutable isFile 71 isFileEncrypted isFileName isLink isReadable isWritable lambda last lconc 72 leftshift length leqp lessp let lineread linereadstring list 73 listFunctions listp listVariables load loadContext loadi loadstring log 74 lowerCase makeTable makeTempFileName map mapc mapcan mapcar maplist max 75 measureTime member memq min minus minusp mod mprocedure nconc ncons 76 needCells neq nequal newline next nil nindex nlambda nprocedure nth 77 nthcdr nthelem null numberp numOpenFiles oddp onep or otherp outfile 78 parseString plist plus plusp portp postdecrement postincrement pp pprint 79 predecrement preincrement prependInstallPath print printf printFunctions 80 printlev println printstruct printVariables procedure profile 81 profileReset profileSummary prog prog1 prog2 progn putd putprop putpropq 82 putpropqq quote quotient random range readTable regExitAfter 83 regExitBefore remd remdq remExitProc remove remprop remq return reverse 84 rexCompile rexExecute rexMagic rexMatchAssocList rexMatchList rexMatchp 85 rexReplace rexSubstitute rightshift rindex round rplaca rplacd 86 saveContext set setarray setContext setFnWriteProtect setof setplist setq 87 setqbitfield steqbitfield1 setShellEnvVar setSkillPath setVarWriteProtect 88 sh shell simplifyFilename sin skDisableMessage skIgnoreMessage 89 skillDebugger sklint skUnignoreMessage sort sortcar sprintf sqrt srandom 90 sstatus stacktrace status step stepout strcat strcmp stringp 91 stringToFunction strlen strncat strncmp sub1 subst substring sxtd symbolp 92 symeval symstrp tablep tableToList tailp tan tconc terpri times tracef 93 tracep tracev type typep unalias unbreakpt uncount uninstallDebugger 94 unless unprofile untrace untracep untracev upperCase warn when where 95 whereis while writeTable xcons zerop zxtd)) 96 */ 97 /\b(@(key|optional|rest)\ 98|a(bs|cos|dd1|l(ias|pha(NumCmp|lessp))|nd|pp(end(|1)|ly)\ 99|r(glist|ray(p|ref))|s(in|s(oc|q))|t(an|om))\ 100|b(and|cdp|itfield()|n(and|o(r|t))|o(r|undp)|reak(|pt)|uildString\ 101|x(nor|or))\ 102|c(a(a(ar|dr|r)|dr|llInitProc|r|se(|q))|d(ar|dr|r)|hangeWorkingDir\ 103|l(ear(|ExitProcs)|ose)\ 104|o(mp(areTime|ress)|n(cat|d|s|t(|inue))|py(|DefstructDeep)|s|unt)\ 105|reateDir|sh)\ 106|d(e(bug(Quit|Status)|clare(|Lambda|NLambda)\ 107|f(Cap(Depends|Prefixes)|InitProc|UserInitProc|macro|prop|struct(|p)|un\ 108|var)\ 109|lete(Dir|File))\ 110|ifference|rain|tpr|ump)\ 111|e(d(|i(|t)|l)|ncrypt|q(|ual)|rr(|or|set(|string))|v(al(|string)|enp)\ 112|x(i(sts|t)|p(|andMacro|t)))\ 113|f(i(le(Length|Seek|Tell)|x(|p))|loat(|p)|or(|all|each)|printf|scanf)\ 114|g(c(|summary)\ 115|e(nsym|qp\ 116|t(|AllLoadedFiles|CurrentTime|DirFiles|F(nWriteProtect|unctions)\ 117|InstallPath|S(hellEnvVar|killPath)|V(arWriteProtect|ersion)\ 118|W(arn|orkingDir)|_(pname|string)|c(|har)|d|q(|q())|s))\ 119|o|reaterp)\ 120|i(f|lToolBox|n(dex|file|st(allDebugger|ring))\ 121|s(Callable|Dir|Executable|File(|Encrypted|Name)|Link|Readable|Writable))\ 122|l(a(mbda|st)|conc|e(ftshift|ngth|qp|ssp|t)\ 123|i(neread(|string)|st(|Functions|Variables|p))\ 124|o(ad(|Context|i|string)|g|werCase))\ 125|m(a(keT(able|empFileName)|p(|c(|a(n|r))|list)|x)|e(asureTime|m(ber|q))\ 126|in(|us(|p))|od|procedure)\ 127|n(con(c|s)|e(edCells|q(|ual)|wline|xt)|i(l|ndex)|lambda|procedure\ 128|th(|cdr|elem)|u(ll|m(OpenFiles|berp)))\ 129|o(ddp|nep|r|therp|utfile)\ 130|p(arseString|l(ist|us(|p))|o(rtp|st(decrement|increment))|p(|rint)\ 131|r(e(decrement|increment|pendInstallPath)\ 132|int(|Functions|Variables|f|l(ev|n)|struct)\ 133|o(cedure|file(|Reset|Summary)|g(|1|2|n)))\ 134|ut(d|prop(|q(|q))))\ 135|quot(e|ient)\ 136|r(an(dom|ge)\ 137|e(adTable|gExit(After|Before)|m(ExitProc|d(|q)|ove|prop|q)|turn|verse\ 138|x(Compile|Execute|Ma(gic|tch(AssocList|List|p))|Replace|Substitute))\ 139|i(ghtshift|ndex)|ound|plac(a|d))\ 140|s(aveContext\ 141|et(|Context|FnWriteProtect|S(hellEnvVar|killPath)|VarWriteProtect|array\ 142|of|plist|q(|bitfield))\ 143|h(|ell)|i(mplifyFilename|n)\ 144|k(DisableMessage|IgnoreMessage|UnignoreMessage|illDebugger|lint)\ 145|ort(|car)|printf|qrt|random|status\ 146|t(a(cktrace|tus)|e(p(|out)|qbitfield1)\ 147|r(c(at|mp)|ing(ToFunction|p)|len|nc(at|mp)))\ 148|ub(1|st(|ring))|xtd|ym(bolp|eval|strp))\ 149|t(a(ble(ToList|p)|ilp|n)|conc|erpri|imes|race(f|p|v)|ype(|p))\ 150|u(n(alias|breakpt|count|installDebugger|less|profile|trace(|p|v))\ 151|pperCase)\ 152|w(arn|h(e(n|re(|is))|ile)|riteTable)|xcons|z(erop|xtd))\b/ { 153 keyword_face (true); 154 language_print ($0); 155 keyword_face (false); 156 } 157 158 /* Skill functions. Use prefix to match, they are too many to 159 enumerate. Used bold-italic... */ 160 /(cdf|dag|db|de|df|dl|dm|enter|fm|ge|hi|mif|tc|tfc|sch)[A-Z][^ \t]*/ { 161 bold_italic (true); 162 language_print ($0); 163 bold_italic (false); 164 } 165} 166 167 168/* 169Local variables: 170mode: c 171End: 172*/ 173