home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 1.iso / dist / fw_enscript.idb / usr / freeware / share / enscript / hl / postscript.st.z / postscript.st
Encoding:
Text File  |  2002-04-08  |  13.0 KB  |  272 lines

  1. /**
  2.  * Name: postscript
  3.  * Description: PostScript programming language.
  4.  *
  5.  * Author: Dave Hylands (DHylands@creo.com)
  6.  */
  7.  
  8. state ps_string extends Highlight
  9. {
  10.   /\\\\./ {
  11.     language_print ($0);
  12.   }
  13.   /[\)]/ {
  14.     language_print ($0);
  15.     return;
  16.   }
  17.   /[\(]/ {
  18.     /* Balanced ()'s in a string */
  19.     language_print ($0);
  20.     call (ps_string);
  21.   }
  22. }
  23.  
  24. state ps_encoded_string extends Highlight
  25. {
  26.   /[\>]/ {
  27.     language_print ($0);
  28.     return;
  29.   }
  30. }
  31.  
  32. state postscript extends HighlightEntry
  33. {
  34.   /* Comments. */
  35.   /%/ {
  36.     comment_face (true);
  37.     language_print ($0);
  38.     call (eat_one_line);
  39.     comment_face (false);
  40.   }
  41.  
  42.   /* String constants. */
  43.   /[\(]/ {
  44.     string_face (true);
  45.     language_print ($0);
  46.     call (ps_string);
  47.     string_face (false);
  48.   }
  49.  
  50.   /[\<]/ {
  51.     string_face (true);
  52.     language_print ($0);
  53.     call (ps_encoded_string);
  54.     string_face (false);
  55.   }
  56.  
  57.   /* Keywords.
  58.  
  59.      I built the keyword list using the following PostScript program
  60.  
  61.     /str 128 string def
  62.     /outFile \(ps.txt)(w)file def
  63.     /proc
  64.     {
  65.         pop //str cvs outFile exch writestring outFile (\n) writestring
  66.     } bind def
  67.  
  68.     systemdict /proc load forall
  69.     statusdict /proc load forall
  70.     errordict  /proc load forall
  71.  
  72.     I then ran:
  73.  
  74.     sort ps.txt | uniq | fmt > ps.key
  75.  
  76.     I then went through the list and removed << >> [ ] and obvious Harlequin
  77.     extensions. Many of the keywords remaining are not documented in the Red
  78.     Book but are implemented in some Adobe implementations (especially the
  79.     ones from statusdict). I decided to leave them in.
  80.  
  81.     And since I don't have emacs (gasp), I wrote a program which takes the
  82.     ps.key file and generates the regular expression. This was faster than
  83.     trying to install emacs and figure out how it works.
  84.  
  85.     Also note that PostScript doesn't require whitespace in front of keywords.
  86.     In particular, text can follow immediately after any of the following
  87.     characters:
  88.  
  89.     > { } ) [ ] /
  90.  
  91.     and can be followed immediately by the following:
  92.  
  93.     < { } ( [ ] /
  94.  
  95.     in addition to white space.
  96.  
  97.     Contents of ps.key:
  98.  
  99.     $error .error 11x17tray 12x24tray 15x24tray = == =print =scratch =string
  100.     FontDirectory GlobalFontDirectory ISOLatin1Encoding
  101.     Run SharedFontDirectory SpecialRun StandardEncoding
  102.     VMerror a2tray a3tray a4tray a5tray abs add aload
  103.     anchorsearch and appletalktype arc arcn arct arcto array ashow astore
  104.     atan authors awidthshow b5tray begin bind bitshift blackoverprint blink
  105.     broadsheettray buildtime bytesavailable cachestatus ceiling cexec
  106.     charpath checkpassword checkscreen clear cleardictstack clearinterrupt
  107.     cleartomark clip clippath closefile closepath closescc colorimage concat
  108.     concatmatrix configurationerror copy copypage cos count countdictstack
  109.     countexecstack counttomark cshow currentblackgeneration
  110.     currentcacheparams currentcmykcolor currentcolor currentcolorrendering
  111.     currentcolorrenderingintent currentcolorscreen currentcolorspace
  112.     currentcolortransfer currentdash currentdevparams currentdict
  113.     currentdlhooks currentfile currentflat currentfont currentglobal
  114.     currentgray currentgstate currenthalftone currenthalftonephase
  115.     currenthsbcolor currentinterceptcolorspace currentlinecap
  116.     currentlinejoin currentlinewidth currentmatrix currentmiterlimit
  117.     currentobjectformat currentoverprint currentpacking currentpagedevice
  118.     currentpoint currentrelativeneutrals currentreproductioncriteria
  119.     currentrgbcolor currentscreen currentseparationcolornames
  120.     currentseparationorder currentshared currentstrokeadjust
  121.     currentsystemparams currenttransfer currenttrapintent
  122.     currentundercolorremoval currentuserparams curveto cvi cvlit cvn cvr
  123.     cvrs cvs cvx daytime def defaultblackoverprint
  124.     defaulthandleerror defaultmatrix defaultmirrorprint defaultpagemargin
  125.     defaultpageparams defaultprocesscolors defaulttimeouts definefont
  126.     defineresource defineuserobject deletefile devdismount devforall
  127.     devformat deviceinfo devmount devstatus dict dictfull dictstack
  128.     dictstackoverflow dictstackunderflow disableinterrupt diskonline
  129.     diskstatus div dlclearcaches dostartpage dosysstart dtransform dup echo
  130.     eerom eescratch eexec enableinterrupt end endofjob eoclip eofill eq
  131.     erasepage errorbeep errordict exch exec execdict execform execstack
  132.     execstackoverflow execuserobject executeonly executive exit exp exposure
  133.     false file filekind filelinenumber filename filenameforall fileposition
  134.     fill filter findcharstrings findcolorrenderingintent findencoding
  135.     findfont findpgfont findresource flattenpath floor flush flushcache
  136.     flushfile for forall gcheck ge genericpaper get getinterval getknown
  137.     getsccconfig gettopfile gettoprealfile globaldict glyphshow grestore
  138.     grestoreall gsave gstate gt handleerror hardwareiomode
  139.     identmatrix idiv idlefonts idtransform if ifelse
  140.     image imagemask index ineofill infill initclip initgraphics initialized
  141.     initializedisk initmatrix instroke internaldict interrupt
  142.     interruptenabled inueofill inufill inustroke invalidaccess invalidexit
  143.     invalidfileaccess invalidfont invalidrestore invertmatrix ioerror
  144.     ismanualfeed itransform jobname jobsource jobstate jobstring jobtimeout
  145.     known kshow languagelevel lastmode le ledgertray legaltray length
  146.     lettertray limitcheck lineto listfilesinestack ln load
  147.     loadcurrentpagedevice loadsetpagedevice log loop lt makefont makepattern
  148.     manualfeedtimeout margins mark matchtemplate matrix maxlength
  149.     medialength mediasize mediawidth mirrorprint mod moveto mul ne neg
  150.     negativeprint newpath noaccess nocurrentpoint not null nulldevice
  151.     openscc or packedarray pagecount pagemargin pageparams pagestackorder
  152.     pagetype pathbbox pathforall pop print printererror printermessage
  153.     printername printerstatus printerupset printobject processcolors product
  154.     prompt pstack put putinterval quit ramsize rand rangecheck rcheck
  155.     rcurveto read readhexstring readline readonly readstring realtime
  156.     rectclip rectfill rectstroke renamefile repeat resetfile resetprinter
  157.     resolution resourceforall resourcestatus restore reversepath revision
  158.     rlineto rmoveto roll rootfont rotate round rrand run save scale
  159.     scalefont sccbatch sccfiles sccinteractive scheck screenforall search
  160.     selectfont sendctrld sendpcmd sendprinterstate serialnumber serverdict
  161.     setaccuratescreens setbbox setblackgeneration setblackoverprint setblink
  162.     setcachedevice setcachedevice2 setcachelimit setcacheparams setcharwidth
  163.     setcmykcolor setcolor setcolorrendering setcolorrenderingintent
  164.     setcolorscreen setcolorspace setcolortransfer setdash
  165.     setdefaultblackoverprint setdefaultmirrorprint setdefaultpagemargin
  166.     setdefaultpageparams setdefaultprocesscolors setdefaulttimeouts
  167.     setdevparams setdlhooks setdostartpage setdosysstart seteescratch
  168.     setexposure setfileposition setflat setfont setglobal setgray setgstate
  169.     sethalftone sethalftonephase sethardwareiomode sethsbcolor setidlefonts
  170.     setinterceptcolorspace setjobtimeout setlinecap setlinejoin setlinewidth
  171.     setmargins setmatrix setmirrorprint setmiterlimit setnegativeprint
  172.     setobjectformat setoverprint setpacking setpage setpagedevice
  173.     setpagemargin setpageparams setpageseen setpagestackorder setpagetype
  174.     setpassword setpattern setprintername setprocesscolors
  175.     setrelativeneutrals setreproductioncriteria setresolution setrgbcolor
  176.     setsccbatch setsccconfig setsccinteractive setscreen setshared
  177.     setsoftwareiomode setstderr setstdio setstrokeadjust setsystemparams
  178.     settransfer settrapintent setucacheparams setundercolorremoval
  179.     setuserdiskpercent setuserparams setvmthreshold shareddict show showpage
  180.     sin softwareiomode sqrt srand stack stackoverflow stackunderflow start
  181.     startjob startpage status statuscommand statusdict stop stopped store
  182.     string stringwidth stroke strokepath sub superstop superstopped
  183.     switchsetting syntaxerror system systemdict tabloidtray timeout token
  184.     transform translate true truncate type typecheck uappend ucache
  185.     ucachestatus ueofill ufill undef undefined undefinedfilename
  186.     undefinedresource undefinedresult undefinefont undefineresource
  187.     undefineuserobject unmatchedmark unregistered upath userdict
  188.     userdiskpercent usertime ustroke ustrokepath validatefont version
  189.     vmreclaim vmstatus waittimeout wcheck where widthshow write
  190.     writehexstring writeobject writestring xcheck xor xshow xyshow yshow
  191.   */
  192.   /(\b|[\>\{\}\)\[\]\/])\
  193. (\$error|\.error|1(1x17tray|2x24tray|5x24tray)|=(|=|print|s(cratch|tring))\
  194. |FontDirectory|GlobalFontDirectory|ISOLatin1Encoding|Run|S\
  195. (haredFontDirectory|pecialRun|tandardEncoding)|VMerror|a(2tray|3tray\
  196. |4tray|5tray|bs|dd|load|n(chorsearch|d)|ppletalktype|r(c(|n|t(|o))|ray)|s\
  197. (how|tore)|tan|uthors|widthshow)|b(5tray|egin|i(nd|tshift)|l\
  198. (ackoverprint|ink)|roadsheettray|uildtime|ytesavailable)|c(achestatus|e\
  199. (iling|xec)|h(arpath|eck(password|screen))|l(ear(|dictstack|interrupt\
  200. |tomark)|ip(|path)|ose(file|path|scc))|o(lorimage|n(cat(|matrix)\
  201. |figurationerror)|py(|page)|s|unt(|dictstack|execstack|tomark))|show|ur\
  202. (rent(blackgeneration|c(acheparams|mykcolor|olor(|rendering(|intent)|s\
  203. (creen|pace)|transfer))|d(ash|evparams|ict|lhooks)|f(ile|lat|ont)|g(lobal\
  204. |ray|state)|h(alftone(|phase)|sbcolor)|interceptcolorspace|line(cap|join\
  205. |width)|m(atrix|iterlimit)|o(bjectformat|verprint)|p(a(cking|gedevice)\
  206. |oint)|r(e(lativeneutrals|productioncriteria)|gbcolor)|s(creen|eparation\
  207. (colornames|order)|hared|trokeadjust|ystemparams)|tra(nsfer|pintent)|u\
  208. (ndercolorremoval|serparams))|veto)|v(i|lit|n|r(|s)|s|x))|d(aytime|e(f(\
  209. |ault(blackoverprint|handleerror|m(atrix|irrorprint)|p(age(margin\
  210. |params)|rocesscolors)|timeouts)|ine(font|resource|userobject))|letefile|v\
  211. (dismount|for(all|mat)|iceinfo|mount|status))|i(ct(|full|stack(|overflow\
  212. |underflow))|s(ableinterrupt|k(online|status))|v)|lclearcaches|os(tartpage\
  213. |ysstart)|transform|up)|e(cho|e(rom|scratch|xec)|n(ableinterrupt|d(\
  214. |ofjob))|o(clip|fill)|q|r(asepage|ror(beep|dict))|x(ch|ec(|dict|form|stack\
  215. (|overflow)|u(serobject|t(eonly|ive)))|it|p(|osure)))|f(alse|i(l(e(|kind\
  216. |linenumber|name(|forall)|position)|l|ter)|nd(c(harstrings\
  217. |olorrenderingintent)|encoding|font|pgfont|resource))|l(attenpath|oor\
  218. |ush(|cache|file))|or(|all))|g(check|e(|nericpaper|t(|interval|known\
  219. |sccconfig|top(file|realfile)))|l(obaldict|yphshow)|restore(|all)|s(ave\
  220. |tate)|t)|ha(ndleerror|rdwareiomode)|i(d(entmatrix|iv|lefonts|transform)\
  221. |f(|else)|mage(|mask)|n(dex|eofill|fill|it(clip|graphics|ialized(|isk)\
  222. |matrix)|stroke|ter(naldict|rupt(|enabled))|u(eofill|fill|stroke)|v(alid\
  223. (access|exit|f(ileaccess|ont)|restore)|ertmatrix))|oerror|smanualfeed\
  224. |transform)|job(name|s(ource|t(ate|ring))|timeout)|k(nown|show)|l(a\
  225. (nguagelevel|stmode)|e(|dgertray|galtray|ngth|ttertray)|i(mitcheck|neto\
  226. |stfilesinestack)|n|o(ad(|currentpagedevice|setpagedevice)|g|op)|t)|m(a\
  227. (ke(font|pattern)|nualfeedtimeout|r(gins|k)|t(chtemplate|rix)|xlength)\
  228. |edia(length|size|width)|irrorprint|o(d|veto)|ul)|n(e(|g(|ativeprint)\
  229. |wpath)|o(access|currentpoint|t)|ull(|device))|o(penscc|r)|p(a(ckedarray\
  230. |ge(count|margin|params|stackorder|type)|th(bbox|forall))|op|r(int(|er\
  231. (error|message|name|status|upset)|object)|o(cesscolors|duct|mpt))|stack\
  232. |ut(|interval))|quit|r(a(msize|n(d|gecheck))|c(heck|urveto)|e(a(d(\
  233. |hexstring|line|only|string)|ltime)|ct(clip|fill|stroke)|namefile|peat|s\
  234. (et(file|printer)|o(lution|urce(forall|status))|tore)|v(ersepath|ision))\
  235. |lineto|moveto|o(ll|otfont|tate|und)|rand|un)|s(ave|c(ale(|font)|c(batch\
  236. |files|interactive)|heck|reenforall)|e(arch|lectfont|nd(ctrld|p(cmd\
  237. |rinterstate))|r(ialnumber|verdict)|t(accuratescreens|b(box|l(ack\
  238. (generation|overprint)|ink))|c(ache(device(|2)|limit|params)|harwidth\
  239. |mykcolor|olor(|rendering(|intent)|s(creen|pace)|transfer))|d(ash|e(fault\
  240. (blackoverprint|mirrorprint|p(age(margin|params)|rocesscolors)|timeouts)\
  241. |vparams)|lhooks|os(tartpage|ysstart))|e(escratch|xposure)|f(ileposition\
  242. |lat|ont)|g(lobal|ray|state)|h(a(lftone(|phase)|rdwareiomode)|sbcolor)|i\
  243. (dlefonts|nterceptcolorspace)|jobtimeout|line(cap|join|width)|m(a(rgins\
  244. |trix)|i(rrorprint|terlimit))|negativeprint|o(bjectformat|verprint)|p(a\
  245. (cking|ge(|device|margin|params|s(een|tackorder)|type)|ssword|ttern)|r\
  246. (intername|ocesscolors))|r(e(lativeneutrals|productioncriteria|solution)\
  247. |gbcolor)|s(c(c(batch|config|interactive)|reen)|hared|oftwareiomode|t(d\
  248. (err|io)|rokeadjust)|ystemparams)|tra(nsfer|pintent)|u(cacheparams\
  249. |ndercolorremoval|ser(diskpercent|params))|vmthreshold))|h(areddict|ow(\
  250. |page))|in|oftwareiomode|qrt|rand|t(a(ck(|overflow|underflow)|rt(|job\
  251. |page)|tus(|command|dict))|o(p(|ped)|re)|r(ing(|width)|oke(|path)))|u(b\
  252. |perstop(|ped))|witchsetting|y(ntaxerror|stem(|dict)))|t(abloidtray|imeout\
  253. |oken|r(ans(form|late)|u(e|ncate))|ype(|check))|u(append|cache(|status)\
  254. |eofill|fill|n(def(|ine(d(|filename|res(ource|ult))|font|resource\
  255. |userobject))|matchedmark|registered)|path|s(er(di(ct|skpercent)|time)\
  256. |troke(|path)))|v(alidatefont|ersion|m(reclaim|status))|w(aittimeout|check\
  257. |here|idthshow|rite(|hexstring|object|string))|x(check|or|show|yshow)\
  258. |yshow)\
  259. (\b|[\<\{\}\(\[\]\/])/ {
  260.     keyword_face (true);
  261.     language_print ($0);
  262.     keyword_face (false);
  263.   }
  264. }
  265.  
  266.  
  267. /*
  268. Local variables:
  269. mode: c
  270. End:
  271. */
  272.