\lstdefinelanguage{PostScript}{%
  morekeywords={abs,add,aload,anchorsearch,and,arc,arcn,arct,arcto,array,ashow,astore,atan,
    awidthshow,begin,bind,bitshift,bytesavailable,cachestatus,ceiling,charpath,
    clear,cleartomark,cleardictstack,clip,clippath,closefile,closepath,colorimage,
    concat,concatmatrix,condition,copy,copypage,cos,count,
    countdictstack,countexecstack,counttomark,cshow,currentblackgeneration,
    currentcacheparams,currentcmykcolor,currentcolor,currentcolorrendering,
    currentcolorscreen,currentcolorspace,currentcolortransfer,currentcontext,
    currentdash,currentdevparams,currentdict,currentfile,currentflat,currentfont,
    currentglobal,currentgray,currentgstate,currenthalftone,currenthalftonephase,
    currenthsbcolor,currentlinecap,currentlinejoin,currentlinewidth,currentmatrix,
    currentmiterlimit,currentobjectformat,currentpacking,currentpagedevice,
    currentpoint,currentrgbcolor,currentscreen,currentshared,currentstrokeadjust,
    currentsystemparams,currenttransfer,currentundercolorremoval,currentuserparams,
    curveto,cvi,cvlit,cvn,cvr,cvrs,cvs,cvx,def,defaultmatrix,definefont,
    defineresource,defineusername,defineuserobject,deletefile,detach,deviceinfo,
    dict,dictstack,div,dtransform,dup,
    echo,eexec,end,eoclip,eofill,eoviewclip,eq,erasepage,errordict,exch,exec,
    execform,execstack,execuserobject,executeonly,executive,exit,
    exp,false,file,filenameforall,fileposition,fill,filter,findencoding,findfont,
    findresource,flattenpath,floor,flush,flushfile,FontDirectory,for,forall,fork,ge,
    get,getinterval,globaldict,GlobalFontDirectory,glyphshow,grestore,grestoreall,
    gsave,gstate,gt,identmatrix,idiv,idtransform,if,ifelse,image,
    imagemask,index,ineofill,infill,initclip,initgraphics,initmatrix,initviewclip,
    instroke,internaldict,inueofill,inufill,inustroke,
    invertmatrix,ISOLatin1Encoding,itransform,join,kshow,
    known,languagelevel,le,length,lineto,ln,load,lock,log,loop,lt,
    makefont,makepattern,mark,matrix,maxlength,mod,monitor,moveto,mul,ne,neg,
    newpath,noaccess,not,notify,null,nulldevice,or,packedarray,
    pathbbox,pathforall,pop,print,printobject,product,prompt,pstack,put,putinterval,
    quit,rand,rcurveto,read,readhexstring,readline,readonly,readstring,
    realtime,rectclip,rectfill,rectstroke,rectviewclip,renamefile,repeat,resetfile,
    resourceforall,resourcestatus,restore,reversepath,revision,rlineto,rmoveto,roll,
    rootfont,rotate,round,rrand,run,save,scale,scalefont,scheck,search,selectfont,
    serialnumber,setbbox,setblackgeneration,setcachedevice,setcachedevice2,
    setcachelimit,setcacheparams,setcharwidth,setcmykcolor,setcolor,
    setcolorrendering,setcolorscreen,setcolorspace,setcolortransfer,setdash,
    setdevparams,setfileposition,setflat,setfont,setglobal,setgray,setgstate,
    sethalftone,sethalftonephase,sethsbcolor,setlinecap,setlinejoin,setlinewidth,
    setmatrix,setmiterlimit,setobjectformat,setoverprint,setpacking,setpagedevice,
    setpattern,setrgbcolor,setscreen,setshared,setstrokeadjust,setsystemparams,
    settransfer,setucacheparams,setundercolorremoval,setuserparams,setvmthreshold,
    shareddict,show,showpage,sin,sqrt,srand,stack,
    StandardEncoding,start,startjob,status,statusdict,stop,stopped,store,string,
    stringwidth,stroke,strokepath,sub,systemdict,transform,
    translate,true,truncate,type,token,uappend,ucache,ucachestatus,
    ueofill,ufill,undef,
    upath,userdict,UserObjects,
    usertime,ustroke,ustrokepath,version,viewclip,viewclippath,vmreclaim,
    vmstatus,wait,wcheck,where,widthshow,write,writehexstring,writeobject,
    writestring,wtranslation,xcheck,xor,xshow,xyshow,yield,yshow},
  sensitive,
  morecomment=[l]\%}[keywords,comments]
